Php 无法生成URL

Php 无法生成URL,php,laravel,laravel-4,Php,Laravel,Laravel 4,我目前正在尝试在索引页上创建一个链接,允许用户创建一个项目。我的routes.php看起来像 Route::controller('items', 'ItemController'); class ItemController extends BaseController { // create variable protected $item; // create constructor public function __construct(Item $item) {

我目前正在尝试在索引页上创建一个链接,允许用户创建一个项目。我的routes.php看起来像

Route::controller('items', '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');
  }
}
我的ItemController看起来像

Route::controller('items', '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/createurl时,我得到了一个

无法为命名路由“items.store”生成URL,因为该路由不存在

错误。我曾尝试使用store()和getStore()而不是postStore(),但我一直遇到同样的错误


有人知道问题出在哪里吗?我不明白为什么没有生成URL。

错误告诉您,没有定义路由名称:

无法为命名路由“items.store”生成URL,因为该路由不存在

请查看中的Laravel 4文档。有几个例子可以让你清楚地知道如何使用这些路线

还可以看一看

以下是您的问题示例:


错误告诉您,未定义路由名称:

无法为命名路由“items.store”生成URL,因为该路由不存在

请查看中的Laravel 4文档。有几个例子可以让你清楚地知道如何使用这些路线

还可以看一看

以下是您的问题示例:


您正在使用Route::controller(),据我所知,它确实会生成路由名称

i、 e.您指的是“items.store”-这是路线名称

你也应该这样做

  • 明确定义所有路线()
  • 使用
    Route::resource('items','ItemController')

如果您使用Route::resource-则需要更改控制器名称

您使用的是Route::controller(),据我所知,它会生成路由名称

i、 e.您指的是“items.store”-这是路线名称

你也应该这样做

  • 明确定义所有路线()
  • 使用
    Route::resource('items','ItemController')

如果使用Route::resource-则需要更改控制器名称,正如Shift Exchange所述,Route::controller()不会生成名称,但可以使用第三个参数:

Route::controller(  'items', 
                    'ItemController', 
                    [
                        'getIndex' => 'items.index',
                        'getCreate' => 'items.create',
                        'postStore' => 'items.store',
                        ...
                    ]
);

正如Shift Exchange所说,Route::controller()不生成名称,但可以使用第三个参数:

Route::controller(  'items', 
                    'ItemController', 
                    [
                        'getIndex' => 'items.index',
                        'getCreate' => 'items.create',
                        'postStore' => 'items.store',
                        ...
                    ]
);

我误读了控制器和资源。好吧,这是有道理的。非常感谢。这个答案与I have有什么关系?在I have中,同一文件夹中的一个文件使用样式表函数加载,而另一个文件不使用样式表函数加载?在我的示例中,没有必要定义到样式表的路由,这是自动发生的。好吧,这是有道理的。非常感谢。这个答案与I have有什么关系?在I have中,同一文件夹中的一个文件使用样式表函数加载,而另一个文件不使用样式表函数加载?在我的示例中,没有必要定义样式表的路由,这是自动发生的。+1用于发布包含问题的广泛代码示例+1用于发布包含您的问题的广泛代码示例!