2017-11-28 7 views
0

だから、私はこのように、私のルートに、コードの一部を持っている:Cake3どのように残りのルートのパスプロパティ内のすべての文字をキャプチャする

Router::scope('/v1', function (RouteBuilder $routes) { 
    $routes->resources('Files', [ 
     'map' => [ 
      'index' => ['action' => 'index', 'method' => 'GET', 'path' => ''], 
      'create' => ['action' => 'add', 'method' => 'POST', 'path' => ''], 
      'view' => ['action' => 'view', 'method' => 'GET', 'path' => ':id'], 
      'update' => ['action' => 'edit', 'method' => ['PUT', 'PATCH'], 'path' => ':id'], 
      'delete' => ['action' => 'delete', 'method' => 'DELETE', 'path' => ':name'], 
     ] 
    ]); 
}); 

そして、私のようなURLがありますhttp://192.168.1.197/v1/files/13625a1ddedcbc2011-40115501.jpg

Too few arguments to function App\Controller\FilesController::delete(), 0 passed in

:私は、しかし、関係なく、私は何をすべきか(私もここに正規表現を試してみました)私はエラーを取得し、 13625a1ddedcbc2011-40115501.jpgはあなたが上記の 'delete' => ['action' => 'delete', 'method' => 'DELETE', 'path' => ':name']ルートで見 :nameパラメータになりたいん

私はおそらく1000回:https://book.cakephp.org/3.0/en/development/routing.htmlのドキュメントを読んだが、私はどのように把握することはできません。

私はこの回答を見ましたが、それを使用する方法は多少曖昧で、すべてのルートを次のように変更します:How to give string in the url in RESTful api in Cakephp?私はしたくありません。

このパラメータはどのように取得できますか?

答えて

1

私は同様のマップといくつかの「楽しさ」を持っていたし、それをあきらめ、これをしなかった:

$routes->connect('/:model/:foreignKey/:commentId', [ 
    'plugin' => 'Burzum/Comments', 
    'controller' => 'Comments', 
    'action' => 'edit', 
    '_method' => 'PUT' 
], [ 
    'pass' => [ 
     'model', 
     'foreignKey', 
     'commentId' 
    ], 
    '_ext' => null, 
    'model' => $allowedModels, 
    'commentId' => $idRegex, 
    'foreignKey' => $idRegex, 
]); 

概念はあなたのかどうかについては明らかであれば、私に教えてください。そうでない場合は、実際のケースに変更します。

+0

あなたはスーパーヘアーで複雑な方法でこれを自分自身でやっているように見えます。\おかげで、私は朝にそれを試してみます – Sammaye

+0

私は同意しますが、マップを介してそれを達成しようとすると、私はそれをこのようにしました。書くことが増えましたが、時間を無駄にすることなく機能しました。 – burzum

関連する問題