我是Laravel 4的新手,并试图弄清楚为什么我收到错误,说方法[show]不存在。
我没有名为“show”的方法,只能想象这是一个内部的Laravel方法,但我不知道如何影响这个或者可以做到这一点。任何有关这方面的想法或帮助都会令人难以置信地感激不尽,因为我已经被困在这两天了,并且无法弄清楚我做错了什么。
查看:
<li><a href="{{ URL::route('account-sign-in') }}">Sign in</a></li>
路线:
/*Sign In (GET)*/
Route::get('/account/sign-in', array(
'as' => 'account-sign-in',
'uses' => 'AccountController@getSignIn'
));
的AccountController:
class AccountController extends BaseController {
public function getSignIn(){
return View::make('user.signIn');
}
public function postSignIn(){
$validator = Validator::make(Input::all(), array( 'email' => 'required|email', 'password' => 'required' ) );
if($validator->fails()){ /*Redirect to the sign in page*/
return Redirect::route('account-sign-in') ->withErrors($validator) ->withInput();
}
else { /*Attempt user sign in*/
$remember = (Input::has('remember')) ? true : false;
$auth = Auth::attempt(array( 'email' => Input::get('email'), 'password' => Input::get('password'), 'active' => 1 ), $remember);
if($auth){
/*Redirect to the intended page*/ return Redirect::intended('/');
}
else {
return Redirect::route('account-sign-in')->with('global', 'Email/password wrong, or account not activated.');
}
}
return Redirect::route('account-sign-in') ->with('global', 'There was a problem signing you in.');
}
}
答案 0 :(得分:1)
“方法[显示]不存在”是什么意思?
您的问题中提供的代码并未显示有关show()
方法的任何信息。根据您的评论,您没有扩展BaseController
,但您的所有控制者都应扩展BaseController,而BaseController
应扩展Controller
,这就是您BaseController
的方式应该看起来像(默认情况下):
class BaseController extends Controller {
/**
* Setup the layout used by the controller.
*
* @return void
*/
protected function setupLayout()
{
if ( ! is_null($this->layout))
{
$this->layout = View::make($this->layout);
}
}
}
您的控制器应该像这样扩展它:
class AccountController extends BaseController {
// Define all of your methods
// including show() if you are using it
}
答案 1 :(得分:1)
听起来你只是在你的AccountController的第一行输错了
可能会说class AccountController extends BasesController {
BasesController
应为BaseController
答案 2 :(得分:1)
我有这个问题。我之前列出了一个(现已弃用)资源,该资源在routes.php文件中引起了冲突。
Route::resource('scheduler', 'SchedulerController');
Route::get('scheduler/notices', 'SchedulerController@notices');