Php Laravel 4:重定向:总是重定向到同一个不需要的路由
由于某些原因,我无法理解,当我在登录后使用Php Laravel 4:重定向:总是重定向到同一个不需要的路由,php,laravel-4,laravel-routing,Php,Laravel 4,Laravel Routing,由于某些原因,我无法理解,当我在登录后使用Redirect::designed()方法时,我总是被发送到路由文件的fourniseurs/ax_getListProduitsURL,无论我真正想要的URL是什么,只有两个例外: 如果我删除postfourniseurs/ax\u getListProduits路径,一切都正常 如果我添加一个echoSession::get('url.designed')call将显示正确的预期URL,并且它可以工作(但是如果我在Auth::trunt之后添加此
Redirect::designed()
方法时,我总是被发送到路由文件的fourniseurs/ax_getListProduits
URL,无论我真正想要的URL是什么,只有两个例外:
- 如果我删除post
路径,一切都正常fourniseurs/ax\u getListProduits
- 如果我添加一个echo
Session::get('url.designed')在登录页面显示之前,code>call将显示正确的预期URL,并且它可以工作(但是如果我在
之后添加此代码,我将被发送到Auth::trunt
)fourniseurs/ax\u getListProduits
Route::group(array('before' => 'auth'), function() {
Route::get('/', array("as"=>"home", function() {
return Redirect::to("fournisseurs");
}));
Route::resource('usergroups', 'UsergroupsController');
Route::get('fournisseurs/ax_produits', 'FournisseursController@ax_produits');
Route::post('fournisseurs/ax_getProduit', 'FournisseursController@ax_getProduit');
Route::post('fournisseurs/ax_updProduit', 'FournisseursController@ax_updProduit');
Route::post('fournisseurs/ax_getListProduits', 'FournisseursController@ax_getListProduits');
Route::resource('fournisseurs', 'FournisseursController');
Route::resource('adresses', 'AdressesController', array('only' => array('store', 'destroy', 'edit', 'update')));
Route::get('/adresses/create/{frs_id}', array('as'=>'adresses.create', 'uses'=>'AdressesController@create'));
Route::resource('contacts', 'ContactsController', array('only' => array('store', 'destroy', 'edit', 'update')));
Route::get('/contacts/create/{frs_id}', array('as'=>'contacts.create', 'uses'=>'ContactsController@create'));
});
Route::get('login', array('as' => 'login', 'uses' => 'SessionsController@create'));
Route::get('logout', array('as' => 'logout', 'uses' => 'SessionsController@destroy'));
Route::resource('sessions', 'SessionsController', array('only' => array('create', 'store', 'destroy')));
登录控制器:
class SessionsController extends BaseController {
public function create() {
// if I uncomment the following line, everything is OK
// echo Session::get('url.intended');
return View::make('sessions.create');
}
public function store() {
$input = Input::all();
$attempt = Auth::attempt(array(
"nom" => $input["nom"],
"password" => $input["password"]
));
if($attempt) return Redirect::intended("/");
return Redirect::back()->with("flash_error", "Nom ou mot de passe invalide")->withInput();
}
public function destroy() {
Auth::logout();
return Redirect::home();
}
}
视图创建.blade
@extends("layouts.default")
@section("content")
<div class="login_form">
<div class="row"><div class="col-md-4 col-md-offset-4">
<h2>Identification</h2>
</div></div>
<div class="row">
<div class="col-md-4 col-md-offset-4">
{{ Form::open(array('route' => 'sessions.store', 'class' => 'form', 'role' => 'form')) }}
<div class="form-group">
{{ Form::label('nom', 'Nom') }}
{{ Form::text('nom', '', array('autocomplete'=>'off', 'class' => 'form-control')) }}
</div>
<div class="form-group">
{{ Form::label('password', 'Mot de passe') }}
{{ Form::password('password', array('autocomplete'=>'off', 'class' => 'form-control')) }}
</div>
{{ Form::submit("Connexion", array("class"=>"btn btn-primary")) }}
{{ Form::close() }}
</div>
</div>
</div>
@stop
@扩展(“layouts.default”)
@第节(“内容”)
识别
{Form::open(数组('route'=>'sessions.store','class'=>'Form','role'=>'Form'))}
{{Form::label('nom','nom')}
{{Form::text('nom','',数组('autocomplete'=>'off','class'=>'Form control'))}
{{Form::label('password','Mot de passe')}
{{Form::password('password',array('autocomplete'=>'off','class'=>'Form control'))}
{{表单::提交(“连接”,数组(“类”=>“btn btn主”)}
{{Form::close()}}
@停止
和默认的刀片布局
<!DOCTYPE html>
<html lang="fr">
<head>
(...) head removed for code clarity
</head>
<body>
<div class="container">
@if(Session::get("flash_msg"))
<div class="row fox-info"><div class="col-md-12">
<div class="alert alert-info">
{{ Session::get("flash_msg") }}
</div>
</div></div>
@endif
<nav class="navbar navbar-default" role="navigation">
<a class="navbar-brand" href="#">EK | FOX</a>
<ul class="nav navbar-nav">
@yield("trail")
</ul>
<ul class="nav navbar-nav navbar-right">
@if(Auth::user())
<li class="dropdown">
<a href="#" data-toggle="dropdown">{{ Auth::user()->nom }} <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="{{ route('logout') }}">Déconnexion</a></li>
</ul>
</li>
@endif
</ul>
</nav>
@if(Session::get("flash_error"))
<div class="row"><div class="col-md-12">
<div class="alert alert-danger">
{{ Session::get("flash_error") }}
</div>
</div></div>
@endif
@yield("content")
</div>
(...) js scripts removed for code clarity
</body>
</html>
(…)为了代码清晰,头部已移除
@if(Session::get(“flash_msg”))
{{Session::get(“flash_msg”)}
@恩迪夫
@产量(“试验”)
@if(Auth::user())
-
@恩迪夫
@if(Session::get(“flash_错误”))
{{Session::get(“flash_错误”)}
@恩迪夫
@产量(“含量”)
(…)为了代码清晰,删除了js脚本
我花了一些时间来处理这个问题,问题来自对“不需要的路由”(fourniseurs/ax_getListProduits)的不幸ajax post调用。此ajax调用是在页面创建之后进行的,即使它返回404错误,Laravel仍在更新url。页面创建和表单提交之间的预期会话变量。为什么要“回显”会话url,然后加载视图?这就是问题所在。发布您的“sessions.create”代码,我们就可以找到解决方案了。@TheShift Exchange谢谢!我添加了视图代码(session.create和扩展布局)。非常清楚:我没有回显会话url,我只是在某个时刻编写了这个跟踪以进行调试,我发现有了这段代码,Redirect::designed()就可以工作了(跟踪是正确的,重定向也是正确的),如果没有它,它就会失败。