Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法路由到第二个编辑资源Laravel-4_Php_Laravel 4_Controller - Fatal编程技术网

Php 无法路由到第二个编辑资源Laravel-4

Php 无法路由到第二个编辑资源Laravel-4,php,laravel-4,controller,Php,Laravel 4,Controller,我有一个用于成员数据的资源控制器。所有常用的资源功能,包括编辑,都工作得很好。我正在尝试在此控制器中添加其他编辑功能,以便创建仅针对成员模型数据的特定子集的视图,因为数据集相当大。所以,我设置了额外的路由和函数。但是当我尝试链接到edit2资源时,Laravel将不会创建正确的链接。我不知道我做错了什么。代码: 路线: Route::get('members.edit2', array('as'=>'edit2', 'uses'=> 'MembersController@edit2'

我有一个用于成员数据的资源控制器。所有常用的资源功能,包括编辑,都工作得很好。我正在尝试在此控制器中添加其他编辑功能,以便创建仅针对成员模型数据的特定子集的视图,因为数据集相当大。所以,我设置了额外的路由和函数。但是当我尝试链接到edit2资源时,Laravel将不会创建正确的链接。我不知道我做错了什么。代码:

路线:

Route::get('members.edit2', array('as'=>'edit2', 'uses'=> 'MembersController@edit2'));
Route::resource('members','MembersController');
成员控制器:

// Regular edit function -- works just fine:
    public function edit($id)
{
    $member = $this->member->find($id);
    return View::make('members.edit', array(
        'member'=>$member, ...
    ));
}

// Extra edit2 function -- should work if I could successfully route to it:
    public function edit2($id)
{
    $member = $this->member->find($id);
    return View::make('members.edit2', array(
        'member'=>$member, ...
    ));
}
show.blade.php:

// normal edit link (works fine, see source code below):
<a href="{{ URL::route('members.edit',$member->id) }}">edit</a>

// additional edit2 link (creates a bad link, see source code below):
<a href="{{ URL::route('edit2',$member->id) }}">edit</a>
//正常编辑链接(工作正常,请参阅下面的源代码):
//其他edit2链接(创建错误链接,请参阅下面的源代码):
源代码:

// normal link that uses edit for member id=27:
<a href="https://zocios.com/members/27/edit">edit</a>

// link that attempts to use edit2 for same member:
<a href="https://zocios.com/members.edit2?27">edit</a>
//对成员id=27使用编辑的普通链接:
//尝试对同一成员使用edit2的链接:

我相信有办法做到这一点。无论我是否使用命名路由“edit2”而不是“members.edit2”,都会创建完全相同的坏链接。我已经尝试了我能想到的每一种组合。Laravel文档对此毫无帮助。谢谢

你的
edit2
路线没有按你应该做的那样声明。第一个错误是您要编辑的成员的
id
没有作为参数传递,第二个错误是调用此
{route('edit2')}
Laravel需要一个类似
/members.edit2
的url,它永远不会出现。你最好使用像
/members/{id}/edit2
这样的东西。 尝试使用以下方法:

Route::get('members/{id}/edit2', array('as'=>'edit2', 'uses'=> 'MembersController@edit2'));
把它叫做:

{{ route('edit2', [$id]) }}
还要小心,无论何时调用
Url::route()
或仅调用
route()
时,都应该以如下数组形式传递它们的参数:

{{route('myRoute', ['par1', 'par2', 'par3', ...]}}

非常感谢你!这一切都很有道理,而且它现在正按照它应该的方式工作。我对Laravel还是比较陌生的,但它已经开始点击了——并没有我想的那么快,但我已经到了那里!我真的很感谢你的帮助和你非常清楚的解释。祝你有美好的一天!谢谢,继续尝试吧,你的努力一定会有回报的。