我是Laravel4世界的新手,我正在尝试将我的网站转换为laravel框架。但一开始我有一点问题。索引我有两个jquery模式:第一个用于singin,第二个用于注册。所以,我想当用户尝试登录并犯错误时向他显示错误。注册相同。但是当我以单身形式出错时,我会收到注册表格...我的英语很糟糕,所以这里是代码:
routes.php文件
Route::get('/', function()
{
return View::make("index.index");
}
Route::post('/', array('as'=> 'singin', function()
{
$data = Input::all();
$rules = array(
'username' => 'min:3',
'password' => 'min:6'
);
$validation = Validator::make($data, $rules);
if($validation->passes())
{
return View::make('users.main');
}
Input::flash();
return Redirect::to('/')->withErrors($validation);
}));
Route::post('/', array('as'=> 'register', function()
{
// same as previous function
]
index.blade.php
<div id="signin" class="reveal-modal" @if($errors->all())
style="display:block; visibility:visible;" @endif >
<header class="reveal-modal-header">
Sign in
</header>
<div class="cont">
<div class="indication">
Sign In
</div>
{{ Form::open(array(
'route' => 'singin',
'class' => 'signin')) }}
<p class="clearfix">
{{ Form::label('username', 'Username') }}
{{ Form::text('username')}}
</p>
<p class="clearfix">
{{ Form::label('password', 'Password') }}
{{ Form::password('password')}}
</p>
<p class="without-label clearfix">
{{ Form::submit('') }}
</p>
@if($errors->all())
<div id="logindiverror" style="" class="alert alert-error">
@foreach($errors->all('<li>:message</li>') as $message)
{{ $message }}
@endforeach
</div>
@endif
{{ Form::close() }}
</div>
<a class="close-reveal-modal" id="close1" href="#">×</a>
</div>
<div id="signup" class="reveal-modal" @if($errors->all())
style="display:block; visibility:visible;" @endif >>
<header class="reveal-modal-header">
Sign up
</header>
<div class="cont">
<div class="indication">
Register
</div>
{{ Form::open(array(
'route' => 'register',
'class' => 'signup')) }}
<p class="clearfix">
<em>(<abbr>*</abbr>) All fields are required</em>
</p>
<p class="clearfix">
<label>Username:<abbr>*</abbr></label>
{{ Form::text('username')}}
</p>
<p class="clearfix">
<label>Email:<abbr>*</abbr></label>
{{ Form::text('email') }}
</p>
<p class="clearfix">
<label>Password:<abbr>*</abbr></label>
{{ Form::password('password1'); }}
</p>
<p class="clearfix">
<label>Password (repeat):<abbr>*</abbr></label>
{{ Form::password('password2'); }}
</p>
<p class="checkboxes clearfix">
<span class="niceCheck">{{ Form::checkbox('agree', '0') }}</span>
I agree with LinkyPlanet Terms & Privacy Policy
</p>
<p class="without-label clearfix">
{{ Form::submit('') }}
</p>
@if($errors->all())
<div id="logindiverror" style="" class="alert alert-error">
@foreach($errors->all('<li>:message</li>') as $message)
{{ $message }}
@endforeach
</div>
@endif
{{ Form::close() }}
</div>
<a class="close-reveal-modal" id="close2" href="#">×</a>
</div>
所以,问题是当用户试图唱歌时,他在密码中犯了一个错误(传递短于6个字符),脚本将他重定向到索引并打开模态进行注册并显示错误,而不是在唱歌中模态。错误在哪里?
干杯:)
答案 0 :(得分:1)
问题在于您使用相同的URI(/
)和相同的方法(POST
)有2条“不同”路线,但您不能。
只有第一个才能按优先顺序运作。这样的事情会更好:
Route::post('/singin', array('as'=> 'singin', function()
{
}));
Route::post('/register', array('as'=> 'register', function()
{
}));
或者您可以将其中一个保留在/
上并更改另一个:
Route::post('/', array('as'=> 'singin', function()
{
}));
Route::post('/register', array('as'=> 'register', function()
{
}));
修改强>
您使用相同的名称(寄存器中的$ errors和登录)。如果两者都有一个视图,则需要使用不同的名称。你可以使用
return Redirect::to('/')->with('registerErrors', $validation->messages());
和
return Redirect::to('/')->with('signInErrors', $validation->messages());
但是对于tedirects他们将受到你的会话的约束,所以你必须这样做:
@if(Session::has('registerErrors'))
<div id="logindiverror" style="" class="alert alert-error">
@foreach(Session::get('registerErrors')->all('<li>:message</li>') as $message)
{{ $message }}
@endforeach
</div>
@endif