1

現在、ユーザーがアイテムを作成できるようにするリンクをインデックス ページに作成しようとしています。私のroutes.phpは次のようになります

Route::controller('items', 'ItemController');

私のItemControllerは次のようになります

class ItemController extends BaseController
{
  // create variable
  protected $item;

  // create constructor
  public function __construct(Item $item)
  {
    $this->item = $item;
  }

  public function getIndex()
  {
    // return all the items
    $items = $this->item->all();

    return View::make('items.index', compact('items'));
  }

  public function getCreate()
  {
    return View::make('items.create');
  }

  public function postStore()
  {
    $input = Input::all();

    // checks the input with the validator rules from the Item model
    $v = Validator::make($input, Item::$rules);

    if ($v->passes())
    {
      $this->items->create($input);

      return Redirect::route('items.index');
    }

    return Redirect::route('items.create');
  }
}

getIndex() を単に index() に変更しようとしましたが、コントローラーメソッドが見つかりません。そういうわけで、私は getIndex() を使用しています。

作成コントローラーを正しく設定したと思いますが、items/create url に移動すると、

そのようなルートが存在しないため、名前付きルート「items.store」の URL を生成できません。

エラー。postStore() の代わりに store() と getStore() だけを使用しようとしましたが、同じエラーが発生し続けます。

誰が問題が何であるか知っていますか?URL が生成されない理由がわかりません。

4

3 に答える 3

0

The Shift Exchange が言ったように、Route::controller() は名前を生成しませんが、3 番目のパラメーターを使用してそれを行うことができます。

Route::controller(  'items', 
                    'ItemController', 
                    [
                        'getIndex' => 'items.index',
                        'getCreate' => 'items.create',
                        'postStore' => 'items.store',
                        ...
                    ]
);
于 2013-08-16T13:18:58.850 に答える
0

エラーは、ルート名が定義されていないことを示しています。

そのようなルートが存在しないため、名前付きルート「items.store」の URL を生成できません。

Named Routesセクションの Laravel 4 Docs を参照してください。これらの種類のルートの使用方法を明確にするがいくつかあります。

また、RESTful コントローラーのセクションも参照してください。

質問の例を次に示します。

Route::get('items', array(
    'as'   => 'items.store',
    'uses' => 'ItemController@getIndex',
));
于 2013-08-16T13:06:49.067 に答える