semplice risposta
per le funzioni comuni in tutta l'applicazione, aggiungere un Lib o di classe Utility.
app/lib/MyClass.php
class MyClass {
public static function usaStateList() {
// ...
}
}
Quindi aggiungere questo nella parte superiore di qualsiasi file che si desidera l'accesso alla funzione:
App::uses('MyClass', 'Lib');
E chiamare la funzione di dove si vuole :
$myClass = new MyClass();
$states = $myClass::usaStateList();
migliore risposta
Sembra a me come il vostro problema specifico è che si vuole essere in grado di ottenere un elenco di stati degli Stati Uniti, sia il controller e il vostro punto di vista. Il modo migliore per farlo è avere una tabella di database degli Stati Uniti.
Creare una tabella nel database denominato us_states.
Esempio SQL:
CREATE TABLE `us_states` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(20) NOT NULL,
`abbreviation` CHAR(2) NOT NULL
) ENGINE = MYISAM
Inserire tutti gli stati come dati in quella tabella. È possibile trovare dump SQL su Internet che già hanno quello per voi (ad esempio Like this one).
Creare un modello UsState in CakePHP.
/**
* Model for US States
*
* @package app.Model
*/
class UsState extends AppModel {
/**
* Default sort order
*
* @var string|array
*/
public $order = 'UsState.name';
}
Che cosa si può poi fare è accedere gli stati dal controller semplicemente utilizzando il modello.
/**
* Your Controller
*
* @package app.Controller
*/
class YourController extends AppController {
public function index() {
// Get a list of US states
$this->loadModel('UsState');
$states = $this->UsState->find('all');
}
}
E se si desidera accedere quegli stati in vista, allora si dovrebbe passare lungo che i dati come si farebbe normalmente tutte le altre variabili.
Immagino che vorresti farlo in modo da poter avere un menu di selezione degli stati degli Stati Uniti, forse.
public function index() {
// Get a list of US states
$this->loadModel('UsState');
$states = $this->UsState->find('all');
// Make the states into an array we can use for a select menu
$stateOptions = array();
foreach ($states as $state) {
$stateOptions[$state['id']] = $state['name'];
}
// Send the options to the View
$this->set(compact('stateOptions'));
}
E secondo lei è possibile visualizzare un menu di selezione per questo come questo:
echo $this->Form->select('us_state_id', $stateOptions);
ho notato upvotes in arrivo per la mia piuttosto vecchio risposta e macchiato la generosità. Potrebbe non essere ovvio, ma questa risposta è stata aggiunta molto prima della ricompensa, cioè non è quella dettagliata, canonica che @trante sta cercando (non sono sicuro di cosa esattamente stia cercando). – ndm