我在使用laravel4 restful routing时遇到了一些问题。这是我如何得到错误
在我的路线中,我关注了用户资源
Route::resource('users', 'UsersController');
根据这个,我可以访问资源支持的所有方法。在我的用户控制器中,我想添加新方法 getProfile 。这意味着我正在尝试使用资源无法支持的方法。根据一些帖子,我建议添加
Route::controller('users', 'UsersController');
最后我的路线变成了
Route::controller('users', 'UsersController');
Route::resource('users', 'UsersController');
通过这种方式,我可以从getProfile
这样的任何地方拨打users/profile
一切都很好。
但是当我在该方法中加载视图时出现问题
public function getProfile()
{
return View::make('users.profile');
}
任何人都可以帮助我离开这里
答案 0 :(得分:0)
首先,我建议你阅读菲尔鲟写的beware-the-route-to-evil。如果你想使用资源路由与其他路由,你必须将其他路由放在资源路由的顶部..例如:
Route::get('users/login','UsersController@getLogin');
Route::resource('users','UsersController');
OR
您可以从
更改控制器public function getLogin()
到
public function login()
希望你找到这个有用的
答案 1 :(得分:0)
<强> Route.php 强>
Route::get('/', function()
{
return View::make('hello');
});
// Route::controller('users', 'UsersController');
Route::get('users/login','UsersController@login');
Route::resource('users', 'UsersController');
Route::resource('customers', 'CustomersController');
的 UsersController.php 强>
<?php
class UsersController extends BaseController {
/**
* User Repository
*
* @var User
*/
protected $user;
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$users = $this->user->all();
return View::make('users.index', compact('users'));
}
/**
*
* Login Form View
*
* @return Response
*/
public function getLogin()
{
return View::make('users.login');
}
}
的 user.php的(模型)强>
<?php
class User extends Eloquent {
protected $guarded = array();
public static $rules = array(
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|max:32|confirmed'
);
/* Relationship */
public function enquire()
{
return $this->hasMany('Enquire');
}
}
答案 2 :(得分:0)
它得到了解决方案,但我不满意。这是我如何做到的
Route::get('users/login', array('as' => 'users.login', 'uses' => 'UsersController@login') );
答案 3 :(得分:0)
@Sanny Singhts解决方案是正确的,但请注意,在 routes.php 中,您应该按顺序放置路线..
Route::get() or Route::post()
应始终位于Route :: resource()
之上