Tag: php

FuelPHP: risolvere l’errore “Call to undefined function Fuel\Core\finfo_open()” in Windows

29 marzo 2012Categoria:php

Utilizzando la classe Upload di FuelPHP è possibile rimanere bloccati a causa di questo errore:

Call to undefined function Fuel\Core\finfo_open()

Il problema è causato dalla mancanza dell’estensione php_fileinfo.dll che deve essere attivata nel file php.ini rimuovendo il commento (il punto e virgola) all’inizio della riga

extension=php_fileinfo.dll

e riavviando il server Apache.

CakePHP: caching semi automatico delle query tramite AppModel

23 gennaio 2012Categoria:database | php

In un precedente articolo è stata mostrata una semplice struttura per salvare i dati in cache da controller.
Per automatizzare questa funzionalità e scrivere meno codice è possibile centralizzare le funzioni necessarie all’interno della classe AppModel.

La classe contiene:

  • una variabile $cache_key per impostare la chiave per il salvataggio in cache
  • una funzione findCached() da richiamare con gli stessi parametri della funzione find() standard che ritorna i risultati salvati in cache oppure, nel caso in cui non ci siano risultati salvati, esegue la funzione find()
  • il callback afterFind() per salvare i risultati in cache dopo la prima esecuzione della query

Ed ecco la classe completa con i commenti necessari per comprenderne il funzionamento:

Leggi tutto…

Prestashop: ordinamento degli attributi in ordine non alfabetico

20 dicembre 2011Categoria:php

Come default Prestashop visualizza gli attributi dei prodotti in ordine alfabetico, quindi un attributo tipo “Taglia” sarà visualizzato dagli utenti del negozio e-commerce in questo modo:

  • L
  • M
  • S
  • XL
  • XXL

Per ottenere l’ordinamento corretto sono necessarie un paio di piccole modifiche ai files di Prestashop.
Nel file classes/Product.php cercare la funzione getAttributesGroups e modificare l’ordinamento della query da

ORDER BY agl.`public_name`, al.`name`');

a

ORDER BY a.`id_attribute`')

Nel file controllers/ProductController.php è invece necessario commentare le seguenti righe

Leggi tutto…

CakePHP Paginator: ordinamento in base a un campo Translated

6 dicembre 2011Categoria:database | php

Nel caso in cui si utilizzi il Paginator Helper e si vogliano ordinare i risultati in base ad un campo tradotto con Tranlsate Behavior

var $actsAs = array(
    'Translate'=> array(
        'name'
    )
);

si deve utilizzare all’interno delle view la funzione sort in questo modo

echo $paginator->sort('name','I18n__name.content');

e aggiungere  nell’AppModel la seguente funzione (testato in CakePHP 1.3):

function hasField($fieldName) {
    if (parent::hasField($fieldName))
        return true;
    else
        switch ($fieldName) {
            case "content":
                return true;
            default:
                return false;
        }
    return false;
}

CakePHP: paginazione con condizioni su campi tradotti

30 novembre 2011Categoria:php

Per eseguire la paginazione in CakePHP utilizzando delle condizioni sui campi tradotti (Translate Behavior) è necessario aggiungere alcune funzioni nell’app_model (testato nella versione 1.3):

var $usePaginateMethod = 'standard';
function setPaginate($method=''){
    if (empty($method)){
        $this->usePaginateMethod = 'standard';
    }else{
        $this->usePaginateMethod = $method;
    }
}

function paginateCount($conditions, $recursive, $extra){
    switch ($this->usePaginateMethod) {
        case 'standard':
            return $this->standardPaginateCount($conditions, $recursive, $extra);
        break;

        case 'custom':
        return $this->customPaginateCount($conditions, $recursive, $extra);
        break;
    }
}

function standardPaginateCount($conditions, $recursive, $extra){
    $results = $this->find('count', compact('conditions', 'recursive', 'extra'));
    return $results;
}

function customPaginateCount($conditions, $recursive, $extra){
    $results = $this->find('all', compact('conditions', 'recursive', 'extra'));
    $count = count($results);
    return $count;
}

Leggi tutto…

PHP: utilizzare la funzione mail() in locale con xampp e Windows 7

9 novembre 2011Categoria:php

In un precedente articolo ho spiegato come configurare sendmail correttamente in Windows per poter utilizzare la funzione PHP mail() in locale.
Ora su Windows7 la configurazione non funziona più e per questo motivo ho dovuto cercare un’alternativa per risolvere velocemente il problema.

L’alternativa si chiama fake sendmail for windows . Ecco come configurare correttamente il programma:

Leggi tutto…

CakePHP : cronometrare la propria applicazione

21 ottobre 2011Categoria:php

In un’applicazione possono esserci dei punti critici che ne rallentano l’esecuzione; nelle applicazioni web molto spesso capita in presenza di query molto pesanti al database e magari non ottimizzate oppure nel caso di chiamate ad API che si connettono a servizi esterni.

Per capire dove l’applicazione “rallenta” è utile inserire dei punti di controllo all’interno delle varie funzioni (soprattutto quelle più critiche) per visualizzare in fase di debug  i tempi impiegati per l’esecuzione e capire subito dove si deve intervenire.

Come prima cosa inserire nell’AppController le seguenti funzioni (o creare l’AppController se non c’è già): Leggi tutto…

CakePHP: estrarre in automatico le stringhe da tradurre tramite console (Windows)

9 settembre 2011Categoria:php

1) Configurare le variabili d’ambiente aggiungendo alla fine della stringa Path:

;C:\xampp\php\

Cambiando il percorso della cartella php in base alla propria installazione.

2) Tramite linea di comando posizionarsi nella cartella “app” della propria applicazione, es:

cd C:\xampp\htdocs\vhosts\pilosio\app

Leggi tutto…

CakePHP: eseguire ricerche sui campi tradotti (Translate Behavior)

6 settembre 2011Categoria:php

CakePHP permette di gestire la traduzione dei campi del DB tramite Translate Behavior.
Ad esempio se abbiamo un Model chiamato Elements definito nel seguente modo:

class Element extends AppModel {

}

Possiamo impostare che i campi title e description siano trattati come traduzioni:

Leggi tutto…

PHP: disabilitare la visualizzazione degli errori di tipo “Deprecated”

18 luglio 2011Categoria:php

Utilizzando una versione aggiornata di PHP è possibile che vengano visualizzati degli errori relativi al codice obsoleto (ad esempio se si utilizzano framework datati):

Deprecated: Assigning the return value of new by reference is deprecated in [...]

Per risolverli è possibile agire in 2 modi.

METODO 1

Leggi tutto…