0

これはルーティングに関係しています。したがって、URL を介してパラメーターを取得するには、基本的に、設定したルート形式に従ってデータを URL に渡します。

これはリンクで動作しています。ルートを作成し、データを URL に渡し、リクエスト メソッドを使用してコントローラーで使用するパラメーターを取得しました。お気に入りURL::site("site/$color/$size")

フォーム送信によって URL を構築している場合はどうなりますか? たとえば、基本的な検索クエリを作成したい場合。

get メソッドを介してフォームを送信するときに、フォーム送信をsearch/orange/largeこのように表示し、このように表示するにはどうすればよいですか。search.php?color=orange&size=large

4

3 に答える 3

0

このようにできる...

public function action_index()
  {
    // this will only be executed if you submmitted a form in your page
    if(Arr::get($_POST,'search')){
      $errors = '';

      $data = Arr::extract($_POST,array('color','size'));

      // you can now access data through the $data array:
      // $data['color'], $data['size']

      // perform validations here
      if($data['color']=='') $error = 'Color is required';
      elseif($data['size']=='') $error = 'Size is required';

      if($error==''){
        $this->request->redirect('search/'.$data['color'].'/'.$data['size']);
      }
    }


    // load your search page view here

    echo 'this is the search page';

  }

これがお役に立てば幸いです。

于 2013-04-01T00:31:42.207 に答える
0

定義上GET メソッドは送信された情報を URL パラメータとして配置します。最終的に のような URL にしたい場合は、 POST-REDIRECT-GET パターンsite/$color/$sizeを使用できます。

私のサイトの1つのコントローラーからの部分的な例( という名前のページに送信ボタンがありますclear_cache_button):

public function action_index()
{
    $session = Session::instance();

    $is_post = (Request::current()->post('submit_button') !== NULL);
    $is_clear_cache = (Request::current()->post('clear_cache_button') !== NULL);

    $p = Database::instance()->table_prefix();
    $people = DB::query(Database::SELECT, "
            SELECT *
            FROM `".$p."Tabe`;
        ")->cached(600, $is_clear_cache)->execute()->as_array('RegID');

    if ($is_clear_cache)
    {
        HTTP::redirect(Request::current()->uri());
    }
    ...
    ...
    ...
}
于 2013-03-28T03:41:58.897 に答える
0

ルート フィルター(v3.3) またはコールバック(3.1、3.2)を使用して、ルート パラメータを手動で設定できます。

于 2013-03-28T22:06:28.537 に答える