2017-11-13 19 views
1

私のsonata adminプロジェクト用の新しいアクションページを作成しようとしています。ファイルをアップロードするページを作成したいが、このページを作成ページとは異なるものにしたい。私はconfigureRoutes機能を変更しようとしたと私はちょうどソナタのチュートリアルのように「/アップロード/パスを追加しましたが、彼らはgetRouterIdParameter()を使用するように私に言っていると私は/app/class/<ID>/uploadのようなものを望んでいません。私はちょうど/app/class/uploadのようなものにしたいです。カスタムアクションページSonata Admin

ことが可能ということですか?

+0

このルートのcurdコントローラアクションをどのように定義しましたか? –

+0

@MKhalidJunaid、はい、しました。 – GasKa

答えて

0
  1. CRUD - 作成、読み取り、更新、削除します。したがって、CRUDコントローラは定義されたオブジェクトで動作します。あなたはCRUDコントローラのアクションを作成するとき、あなたはそれ以外の場合は、オブジェクトを取得する必要があります - あなたのアクションは、更新、削除を作成するために、どのオブジェクト分からないだろう、など、あなたのルートにオブジェクトのIDを入れてなければならない理由です
  2. public function superAction(Request $request, $id = null) 
    { 
        try { 
         if ($id !== null) { 
          $yourObject = $this->admin->getObject($id); 
         } 
        } catch (NotFoundHttpException $e) { 
         error_log($e->getMessage()); 
        } 
    
        //... your logic 
    
    } 
    

しかし!あなたのアクションが特定のオブジェクトを使用することを想定していない場合 - あなたのルートにあるオブジェクト$idを避けることができます。また、GETメソッドで変数を渡すこともできます。あなたが望むほど多く

は、すべてのあなたのオブジェクトを更新することを、想像してみてください。そして、あなたはupdateAllAction()を作成し、このルートを追加することができます。

/** 
* @param RouteCollection $collection 
*/ 
protected function configureRoutes(RouteCollection $collection) 
{ 
    $collection->add('updateAll', 'update/all'); 
} 

限り、あなたの行動はあなたのURIに$this->getRouterIdParameter()を避けることができる特定のオブジェクトを気にしないよう。

は、それが役に立つと思います。

+1

'$ collection-> add( 'upload'、 'upload');のみを設定することはできませんでした。これが答えです。ありがとうございました ! – GasKa

+0

@ GasKaを入力し、答えを正しいものとしてマークします。 – staskrak

関連する問題