0

私はCakePHP v2.3.xで作業しており、編集ページで検索結果でページを動的に更新する必要があります...

Views/Tests/admin_edit.phpビュー ページの 1 つからQuestionsController.php.

リクエストを処理する (これまでの) アクションは次のとおりです。

public function admin_search() {
    if ($this->request->is('post')) {
        $searchdata = $this->request->data;
        $r = $this->Question->find('all', array('conditions' => array('Question.id' => $searchdata['id'])));
        echo json_encode($r);
        exit;

    }
}

現在、ユーザーが入力した ID と一致する ID を持つ質問のみが返されますが、完成したバージョンではいくつかの異なるフィールドが検索されます。条件配列に追加のキーと値のペアを追加することで、これを行う方法を知っています。ただし、これらのフィールドをオプションにする方法がわかりません。ユーザーが ID ではなく質問名を入力した場合、またはその逆の場合はどうなりますか? CakePHP が空のフィールド条件を無視するような設定はありますか?

同様に、たとえば部分文字列や整数範囲に一致するように演算子を設定する方法はありますか? 更新:ドキュメントでこれを見つけました。

4

1 に答える 1

2

最初に空のエントリを自分で削除します。

$searchdata3 つのオプション フィールドを持つ配列があり、そのうちの 1 つが空白であるとします。最初に条件配列を作成します。

$searchdata = array("id" => 1, "name" => "", "type" => "foo");
$conditions = array('Question.id' => $searchdata['id'], 'Question.name' => $searchdata['name'], "Question.type" => $searchdata['type']);

(または、派手になりたい場合)

foreach($searchdata AS $key => $value) $conditions['Question.' . $key] = $value;

クリーンアップして$conditions、空の値を取り除きます。

$conditions = array_filter($conditions);

多田:

$r = $this->Question->find('all', array('conditions' => $conditions));

http://3v4l.org/JN6PAを参照

于 2013-04-11T14:34:44.950 に答える