laravel 4中的错误

Posted

技术标签:

【中文标题】laravel 4中的错误【英文标题】:Error in laravel 4 【发布时间】:2015-09-02 17:24:03 【问题描述】:

当我尝试登录时,它会将我重定向到 www.example.com/admin/username 但它显示 NotFoundHttpException 错误。提前感谢您!

routes.php 文件

Route::get('/admin', 'SessionsController@create');  

Route::get('/logout', 'SessionsController@destroy');  

Route::get('profile', function()

    return "welcome! Your username is" . Auth::admin()->username;
);  

Route::resource('sessions', 'SessionsController', ['only' => ['index',   'create', 'destroy', 'store']]);

这里是控制器SessionsController.php

<?php

class SessionsController extends \BaseController 

/**
 * Show the form for creating a new resource.
 *
 * @return Response
 */
public function create()

    return View::make('admins');



/**
 * Store a newly created resource in storage.
 *
 * @return Response
 */

public function store()


    $rules = array('username' => 'required', 'password' => 'required');

    $validator = Validator::make(Input::all(), $rules);

    if($validator -> passes())
        $credentials = array(
            'username' => Input::get('username'),
            'password' => Input::get('password')
        );
        if(Auth::admin($credentials,true))
            $username = Input::get('username');
            return Redirect::to("admin/$username");
         else 
            return Redirect::to('/admin')->withErrors('Username or password invalid');
        
     else 
        return Redirect::to('/admin')->withErrors($validator->messages());





/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return Response
 */
public function destroy($id)

    Auth::logout();

    return Redirect::home();

admins.blade.php

Form::open(array('route' => 'sessions.store'))
<h1>ADMIN LOGIN </h1> 
Form::label('username', 'Username')
Form::text('username')
Form::label('password', 'Password')
Form::password('password')
Form::submit('Login')
$errors->first()

Form::close()

这是模型Admin.php

    use Illuminate\Auth\UserTrait;
    use Illuminate\Auth\UserInterface;
    use Illuminate\Auth\Reminders\RemindableTrait;
    use Illuminate\Auth\Reminders\RemindableInterface;

    class Admin extends Eloquent implements UserInterface, RemindableInterface 


        /**
         * The attributes excluded from the model's JSON form.
         *
         * @var array
         */
        protected $hidden = array('password', 'remember_token');

        /**
         * The database table used by the model.
         *
         * @var string
         */
       protected $table = 'admins';



    

我也安装了ollieread multiauth 这是auth.php文件

    return array(

        'multi' => array(
            'admin' => array(
                'driver' => 'database',
                'model'  => 'Admin',
                'table'  => 'admins'
            ),

            'user' => array(
                'driver' => 'eloquent',
                'model'  => 'User',
                'table'  => 'users'
            )
        ),

        'reminder' => array(

            'email' => 'emails.auth.reminder',

            'table' => 'password_reminders',

            'expire' => 60,

        ),

    );

【问题讨论】:

您尚未声明任何指向 /admin/username 的路由。这就是 laravel 找不到的原因 @akad0 这基本上就是问题的答案 【参考方案1】:

您尚未声明任何指向 /admin/username 的路由。这就是 laravel 找不到的原因。

这是一个例子:

在您的路线文件中

Route::get('/admin/username', 'SessionsController@getByUserName');

我强烈建议您使用命名路由。即使您的应用程序变得更大,它们也更容易管理。

例如

在您的路线文件中

Route::get('/admin/username',array('as' =&gt; 'admin.username', 'uses'=&gt;'SessionsController@getByUserName'));

然后你可以调用指向某个控制器的 url 或者使用

URL::route('admin.username')(内部视图)或

Redirect::route('admin.username')(在控制器内部)

您还可以使用数组传递变量。像这样

URL::route('admin.username',array($user-&gt;username))

更多关于路由here

【讨论】:

谢谢!如果登录了管理员,我还应该创建一个视图。 如果管理员登录,则无需创建单独的视图。考虑根据权限或角色限制这些视图中的访问。你可以使用的一个很好的包是github.com/Zizaco/entrust

以上是关于laravel 4中的错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4 迁移错误?

验证laravel 4错误中的数组表单字段

第 245 行 ConnectionFactory.php 中的不同错误 - Laravel 5.4

Laravel 4迁移问题中的外键

Laravel 5.4 路由中的双箭头错误(语法错误,意外的 '=>' (T_DOUBLE_ARROW))

Laravel 4 - 如何获得有意义的错误