簡單的答案
常用功能在您的應用程序,添加一個庫或工具類。
應用程序/庫/ MyClass.php
class MyClass {
public static function usaStateList() {
// ...
}
}
然後你要訪問功能取其文件的頂部添加此:
App::uses('MyClass', 'Lib');
,並致電功能你喜歡的地方:
$myClass = new MyClass();
$states = $myClass::usaStateList();
更好的答案
它看起來對我來說,你的具體問題是,你希望能夠得到一個列表的美國在你的控制器和視圖兩種狀態。做到這一點的最好方法是建立美國各州的數據庫表。
在你的數據庫稱爲us_states創建一個表。
例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
插入所有狀態如在該表中的數據。您可以在互聯網上找到已經爲您提供的SQL轉儲(例如Like this one)。
在CakePHP中創建一個UsState模型。
/**
* Model for US States
*
* @package app.Model
*/
class UsState extends AppModel {
/**
* Default sort order
*
* @var string|array
*/
public $order = 'UsState.name';
}
那麼你可以做的就是利用該模型從控制器訪問的狀態是什麼。
/**
* 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');
}
}
如果你想訪問你查看這些狀態,那麼你就應該沿着這些數據,你通常會任何其他變量傳遞。
我想你會想這樣做,所以你可以有一個美國的選擇菜單,也許。
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'));
}
並在您的視圖中可以顯示,像這樣的選擇菜單:
echo $this->Form->select('us_state_id', $stateOptions);
我注意到upvotes進來爲我而舊的答案,發現賞金。它可能並不明顯,但是這個答案已經在賞金之前加了很久,也就是說它不是@trante正在尋找的詳細的,規範的(不確定他究竟在尋找什麼)。 – ndm