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' => 'admin.username', 'uses'=>'SessionsController@getByUserName'));
然后你可以调用指向某个控制器的 url 或者使用
URL::route('admin.username')
(内部视图)或
Redirect::route('admin.username')
(在控制器内部)
您还可以使用数组传递变量。像这样
URL::route('admin.username',array($user->username))
更多关于路由here
【讨论】:
谢谢!如果登录了管理员,我还应该创建一个视图。 如果管理员登录,则无需创建单独的视图。考虑根据权限或角色限制这些视图中的访问。你可以使用的一个很好的包是github.com/Zizaco/entrust以上是关于laravel 4中的错误的主要内容,如果未能解决你的问题,请参考以下文章
第 245 行 ConnectionFactory.php 中的不同错误 - Laravel 5.4