“方法[显示]不存在”是什么意思?

时间:2014-03-17 00:15:29

标签: methods laravel laravel-4

我是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.'); 
  } 
}

3 个答案:

答案 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');