検索条件が異なるさまざまな検索ページがあるので、コントローラから渡されたパラメータを取得し、必要なデータを収集して私のビューファイル内で使用されるように設定して、条件を満たすためのドロップダウンボックスを設定することができます。cakePHPカスタム配列から選択ボックスを作成する
私は、動的選択ボックスを構築するためにcakePHPヘルパーを使用する必要があるところまですべてを書き込むことができました。私は私が何か間違ったことをやっていると確信していますし、これを行うと、まだ多少ダイナミックそれを維持する簡単な方法がある場合はどこのことができます支援してください。
// COMPONENT METHOD:
public function filterQueries($parameters) {
// Get defaults from the user:
$criteria = $parameters["custom"];
$defaults = $parameters["defaults"];
// Validate the defaults the user may want and assign them to the return array:
if($defaults != "false") {
foreach($defaults as $key => $value) {
if(array_key_exists($value, $this->defaults)) {
$this->returnArray["defaults"][$value] = $this->defaults[$value];
}
}
}
// Get all data for the custom requested form fields:
if($criteria != false) {
foreach($criteria as $model => $arguments) {
$fields = $arguments["fields"];
$conditions = $arguments["conditions"];
$recursive = $arguments["recursive"];
if(!in_array($model,$this->uses)) {
$useModel = ClassRegistry::init($model);
} else {
$useModel = $this->$$model;
}
$array = $useModel->find("all",array("conditions" => $conditions, "fields" => $fields, "recursive" => $recursive));
$this->returnArray["custom"][$model] = $array;
}
}
return $this->returnArray;
}
を上記の機能が故障し、アレイのいずれかのカスタムを取得します検索やデフォルトは(上記は含まれていないが、それはすべての作品は、それは私がそれを期待していたとおりの配列を返します。
// The code within my action to get the content from above:
// Load the Filters component to search data:
$search = $this->Components->load("Filter");
// Tell search what you want:
$searchBoxes = array(
"defaults" => array("statuses", "survey_type"),
"custom" => array(
"User" => array(
"fields" => array("User.id","User.first_name", "User.last_name"),
"conditions" => array("User.user_group_id" => "4f847c63-1840-446e-88be-3e4d29566cf0"),
"recursive" => -1
)
)
);
$filterResults = $search->filterQueries($searchBoxes);
$this->set("filters",$filterResults);
をだから今、私はまだすべて(罰金の私のビューファイル内でこのマルチ連想配列を取得します)、上に作成した配列に基づいてユーザーのリストを作成する例を作ってみたいと思いますが、その結果は私の予想どおりではありません:
echo $this->Form->input('user_id',
array(
"type" => "select",
"options" => $filters["custom"]["User"]
)
);
HTML出力が壊れていると、このようにそれを表示します
<option value="last_name">Doe</option>
<option value="first_name">Jihn</option>
<optgroup label="User"> </optgroup>
<optgroup label="1"> </optgroup>
<option value="last_name">Marilyn</option>
<option value="first_name">Monroe</option>
私はケーキの多くの経験を持っていない、ただの結果を取得する方法を理解できないことを認める:
<option value='USERID'>NAME</option> // Yes I know the names and surnames must be concatinated still
それを行うと、それを正しい方法を行う方法上の任意のアドバイスのヘルプやガイダンスは、いただければ幸いです:)
$フィルタON VARDUMP [「カスタム」] [「ユーザー」]
array
0 =>
array
'User' =>
array
'id' => string '4f84840e-cda8-4704-8fdf-210729566cf0' (length=36)
'first_name' => string 'Name' (length=4)
'last_name' => string 'Surname' (length=11)
1 =>
array
'User' =>
array
'id' => string '4f8488cb-53e0-4f72-af73-3de229566cf0' (length=36)
'first_name' => string 'Name' (length=6)
'last_name' => string 'Surname' (length=6)
を役に立てば幸い["custom"] ["User"]) 'のように見えますか? – Jack
アレイ 0 => アレイ 'ユーザ' => アレイ 'ID' =>文字列 '4f84840e-cda8-4704-8fdf-210729566cf0'(長さ= 36) 'FIRST_NAME' =>文字列 'NAME'(長さ= 4) 'LAST_NAME' =>文字列 'SURNAME'(長さ= 11) 1 => アレイ 'ユーザ' => 'ID' =>文字列「4f8488cb-53e0-4f72-af73-3de229566cf0アレイ'length = 36) ' first_name '=>文字列' NAME '(長さ= 6) ' last_name '=>文字列' SURNAME '(長さ= 6).....他のすべてのユーザーも返します – mauzilla
ああ、そこに投稿する質問を編集できますか?コメントが書式なしで読みにくい。 – Jack