Aslında bu şekilde bir tanımlama yapmana gerek yok laravel4 de
$rules = array(
'username' => 'required|min:2|exists:users',
'password' => 'required|min:6',
);
$validation = Validator::make( Input::all(), $rules);
if ($validation->fails()){
return Redirect::back()->withInput()->withErrors($validation);
}
şeklinde o problemi aşarsın, Redirect::back()->withInput()->withErrors($validation) bölümü zaten view form yani login formunu açar, senin ekstradan view kullanman gerekmez,
Burada post ile get i ayırmak için ise yeni bir controller oluştur ismi
UserController olsun,
<?php
class UserController extends Controller {
//Login
public function getLogin() //GET metodu ile login metodu çağrılırsa burası çalışacak
{
if (Auth::check()) return Redirect::to('user/wall');
return View::make('user.login');
}
public function postLogin() //POST metodu ile login metodu çağrılırsa burası çalışacak
{
if(Auth::check()){return Redirect::to('user/wall');} //oturum açmışsa yönlendir.
$rules = array(
'username' => 'required|min:2|exists:users',
'password' => 'required|min:6',
);
$validation = Validator::make( Input::all(), $rules);
if ($validation->fails()){
return Redirect::back()->withInput()->withErrors($validation);
}
$credentials = array(
'username' => Input::get('username'),
'password' => Input::get('password')
);
if (Auth::attempt( $credentials)) { //oturum açıldı
return Redirect::to('user/wall'); //yönlendir.
} else {
return Redirect::back()->withInput()->with('error', 'Kullanıcı adı ya da şifreniz yanlış.');
}
}
public function getWall()
{
echo 'user wall';
}
}
app/routes.php dosyasına
Route::controller('user','UserController');
kodlarını ekle
artık, localhost/public/user/login dediğinde view/user/login.blade.php dosyası ekrana basılacak.
formu POST metodu ile gönderdiğinde postLogin fonksiyonu çalıştırılacak.
view dosyanda form url si
<form class="" action='{{ URL::to('user/login/') }}' method="POST" >
Route::Controller şeklinde yaptığın tanımlamadan sonra UserController için de getFunction postFunction gibi istediğin kadar fonksyion ekleyebilir, bu fonksiyonlara Route::controller(
'ISIM',...) bölümüne yazdığın isim üzerinden
url/isim/function şeklinde erişebilirsin.
Laravel 4 site üzerinde yapılan talebi filtreleyecek ve talep
GET metodu ise getFunction,
POST metodu ise postFunction fonksiyonlarından birisine yönlendirecektir.
with('error','hata mesajı') şeklinde tanımladığın mesajı view içerisinde
Session::get('error')
şeklinde okuyabilirsin.
if (Session::has('error')) echo Session::get('error');
şeklinde ekrana hata mesajını basabilirsin.
Validation sınıfından gelen withErrors($validation) içindeki hataları ise, with('error','mesaj') ile birlikte
@if ($errors->any() || Session::has('error'))
<div class="error" id="error-box">
<ul>
{{ implode('',$errors->all('<li>:message</li>')) }}
@if (Session::get('error') != '') <li>{{ Session::get('error') }}</li> @endif
</ul>
</div>
@endif
şeklinde view dosyasında gösterebilirsin.
Eğer eksik yada yanlışım varsa üstadlar düzeltecektir, eksik yanlış için kusura bakmayın.
Hayırlı geceler...