SlideShare a Scribd company logo
Adaugarea unei inregistrari
in db in sens Laravel
(cu validare)
Adaugarea de inregistrari in tabela
Editati fisierul /app/Http/routes.php astfel:
<?php
use AppFlower;
Route::get('flowers', 'FlowersController@index');
Route::get('flowers/add', 'FlowersController@add');
Route::get('flowers/{nume}', 'FlowersController@show');
?>
Atentie!!!
• Daca veti edita fisierul routes.php astfel:
<?php
use AppFlower;
Route::get('flowers', 'FlowersController@index');
Route::get('flowers/{nume}', 'FlowersController@show');
Route::get('flowers/add', 'FlowersController@add');
?>
veti obtine o eroare deoarece framework-ul va astepta un {nume} de
inregistrare existent, dupa “flowers” in adresa.
Este foarte importata ordinea regulilor de rutare in routes.php!
Vederea
• Vom crea vederea: /resources/views/flowers/addflower.blade.php<html>
<html>
<head><title>Add a flower</title></head>
<body>
<?php
echo Form::open(array('action' => 'FlowersController@store')) ;
echo Form::label('nume', 'Nume: ');
echo Form::text('nume')."<br><br>";
echo Form::label('marime', 'Marime: ');
echo Form::text('marime')."<br><br>";
echo Form::label('culoare', 'Culoare: ');
echo Form::text('culoare')."<br><br>";
echo Form::label('pret', 'Pret: ');
echo Form::text('pret')."<br><br>";
echo Form::submit('Add flower');
echo Form::close();
?>
</body>
</html>
• In acest moment codul formei generate este:
<!DOCTYPE html>
<html>
<head><title>Add flower</title></head>
<body>
<h1>Add a flower</h1>
<form method="POST" action="http://localhost/laravelproj/public/flowers/add" accept-charset="UTF-8"><input
name="_token" type="hidden" value="XYzPAmsxqLSPejkCJlou9PohMyKvQy1i18mVhfvg">
<label for="nume">Nume: </label>
<input name="nume" type="text" id="nume"><br/><br/>
<label for="culoare">Culoare: </label>
<input name="culoare" type="text" id="culoare"><br/><br/>
<label for="marime">Marime: </label>
<input name="marime" type="text" id="marime"><br/><br/>
<label for="pret">Pret: </label>
<input name="pret" type="text" id="pret"><br/><br/>
<input type="submit" value="Add flower">
</form>
</body>
</html>
• Adaugati metoda FlowersController::add
public function add(){
return view('flowers.addflower');
}
Se observa ca forma va trimite implicit datele in pagina /flowers/add. Pentru a
modifica aceasta adresa, vom scrie:
echo Form::open(['url'=>'flowers']) ;
Pentru a trimite datele direct in metoda unui controller, vom modifica forma
addflower astfel:
echo Form::open(array('action' => 'FlowersController@store'))
;
In acest caz trebuie adaugata si ruta in routes.php astfel:
Route::any('flowers/store', 'FlowersController@store');
si deasemenea vom defini metoda store in FlowersController:
public function store(){
return 'Datele nu au fost inserate inca :)';
}
• Pentru a putea gestiona datele trimise de forma in metoda controller-
ului, va trebui sa modificam codul controller-ului astfel:
Inlocuiti linia
use IlluminateHttpRequest;
cu linia:
use Request;
apoi va trebui sa editam metoda store astfel:
public function store(){
$var=Request::all();
return $var;
}
Daca vom dori sa afisam doar numele, vom scrie:
public function store(){
$nume = Request::input('nume');
return $nume;
}
• Pentru a salva datele in tabela, vom edita metoda store in controller
astfel:
public function store(){
$flower=new Flower;
$flower->nume=Request::input('nume');
$flower->marime=Request::input('marime');
$flower->culoare=Request::input('culoare');
$flower->pret=Request::input('pret');
$flower->save();
return redirect('/flowers');
}
Validarea datelor (metoda1– validarea in
controller)
• Info: http://laravel.com/docs/5.0/validation
Editati metoda store din /app/Http/Controllers/FlowersController astfel:
public function store(){
$validator=Validator::make(Request::all(), [
'nume'=>'required',
'culoare'=>'required',
'marime'=>'required',
'pret'=>'required'
]);
if($validator->fails()) return 'failed validation';
$flower=new Flower;
$flower->nume=Request::input('nume');
$flower->marime=Request::input('marime');
$flower->culoare=Request::input('culoare');
$flower->pret=Request::input('pret');
$flower->save();
return redirect('/flowers');
}
• Daca veti incerca sa vizualizati
• http://localhost/paravelproj/public/flowers/add si apoi incercati sa inserati o
inregistrare vida, veti obtine o eroare deoarece nu va fi “vazuta” clasa
Validator.
• Pentru a elimina eroarea puteti utiliza metodele:
METODA1: Adaugati linia: use Validator; in controllerul FlowersController sau
METODA2: Scrieti codul validatorului asttfel:
$validator=Validator::make(Request::all(), [
'nume'=>'required',
'culoare'=>'required',
'marime'=>'required',
'pret'=>'required'
]);
Apoi veti obtine output-ul:
• Pentru a verifica fiecare camp separat si a afisa mesaje de eroare specifice, vom edita validarea din metoda
store astfel:
public function store(){
$validation=Validator::make(Request::all(), [
'nume'=>'required',
'culoare'=>'required',
'marime'=>'required',
'pret'=>'required'
]);
if($validation->fails()){
return redirect()->back()->withInput()->withErrors($validation->messages());
}
$flower=new Flower;
$flower->nume=Request::input('nume');
$flower->marime=Request::input('marime');
$flower->culoare=Request::input('culoare');
$flower->pret=Request::input('pret');
$flower->save();
return redirect('/flowers');
}
• Editati si vederea /resources/views/flowers/addflower.blade.php astfel:
<!DOCTYPE html>
<html>
<head><title>Add a flower</title></head>
<body>
<?php
echo Form::open(array('action' => 'FlowersController@store')) ;
echo Form::label('nume', 'Nume: ');
echo Form::text('nume');
echo $errors->first('nume')."<br/><br/>";
echo Form::label('marime', 'Marime: ');
echo Form::text('marime');
echo $errors->first('marime')."<br/><br/>";
echo Form::label('culoare', 'Culoare: ');
echo Form::text('culoare');
echo $errors->first('culoare')."<br/><br/>";
echo Form::label('pret', 'Pret: ');
echo Form::text('pret');
echo $errors->first('pret')."<br/><br/>";
echo Form::submit('Add flower');
echo Form::close();
?>
</body>
</html>Daca veti incerca sa adaugati o interistrare vida http://localhost/paravelproj/public/flowers/add , veti obtine:
Eliminarea erorii: No supported encrypter found.
The cipher and / or key length are invalid.
In fereastra de comanda scrieti:
php artisan key:generate
Validarea datelor (metoda2– validarea in
model)
• In acest caz, editati fisierul model /app/Flower.php astfel:
<?php namespace App;
use IlluminateDatabaseEloquentModel;
class Flower extends Model {
protected $fillable=['nume','marime','culoare','pret'];
public $timestamps=false;
protected $table = 'flowers';
public static $rules=[
'nume'=>'required',
'culoare'=>'required',
'marime'=>'required',
'pret'=>'required'
];
}
• Deasemenea editati metoda store din controllerul FlowersController astfel:
public function store(){
$validation=Validator::make(Request::all(),Flower::$rules);
if($validation->fails()){
return redirect()->back()->withInput()->withErrors($validation->messages());
}
$flower=new Flower;
$flower->nume=Request::input('nume');
$flower->marime=Request::input('marime');
$flower->culoare=Request::input('culoare');
$flower->pret=Request::input('pret');
$flower->save();
return redirect('/flowers');
}
Daca veti incerca sa adaugati o interistrare vida
http://localhost/paravelproj/public/flowers/add , veti obtine:
• Pentru a face validarea numai in model, editati modelul Flower.php:
<?php namespace App;
use IlluminateDatabaseEloquentModel;
use Validator;
class Flower extends Model {
public static $errors;
protected $fillable=['nume','marime','culoare','pret'];
public $timestamps=false;
protected $table = 'flowers';
public static $rules=[
'nume'=>'required',
'culoare'=>'required',
'marime'=>'required',
'pret'=>'required'
];
public static function isValid($data){
$validation=Validator::make($data,static::$rules);
if($validation->passes()) return true;
static::$errors=$validation->messages();
return false;
}
}
?>
• In acest caz metoda store din controller devine:
public function store(){
if(!Flower::isValid(Request::all())){
return redirect()->back()->withInput()->withErrors(Flower::$errors);
}
$flower=new Flower;
$flower->nume=Request::input('nume');
$flower->marime=Request::input('marime');
$flower->culoare=Request::input('culoare');
$flower->pret=Request::input('pret');
$flower->save();
return redirect('/flowers');
}

More Related Content

PDF
Curso Symfony - Clase 1
PDF
Meet Magento Milano 2016
PPT
Drupal Cms Prezentace
PPTX
Performance of Visualforce
TXT
PPTX
12.eloquent in Laravel
PDF
Zend Framework: abordagem prática
Curso Symfony - Clase 1
Meet Magento Milano 2016
Drupal Cms Prezentace
Performance of Visualforce
12.eloquent in Laravel
Zend Framework: abordagem prática

What's hot (11)

PDF
jQuery - Javascript para quem não sabe Javascript
PPTX
Introdução ext js 4
PPT
Управление отображением материалов с помощью Display Suite. Илья Станкевич.
PDF
Silex al límite
PDF
Quiz Component For Joomla
PDF
Introducción a Bolt
PDF
Як досвід компанії перетворився на фреймворк
DOCX
Un juego creado en php
PDF
UISearchController par Stéphane sudre
PPTX
Advanced JQuery
DOCX
jQuery - Javascript para quem não sabe Javascript
Introdução ext js 4
Управление отображением материалов с помощью Display Suite. Илья Станкевич.
Silex al límite
Quiz Component For Joomla
Introducción a Bolt
Як досвід компанії перетворився на фреймворк
Un juego creado en php
UISearchController par Stéphane sudre
Advanced JQuery
Ad

More from Razvan Raducanu, PhD (20)

PPTX
12. edit record
PPTX
11. delete record
PPTX
10. view one record
PPTX
9. add new record
PPTX
8. vederea inregistrarilor
PPTX
PPTX
6. hello popescu 2
PPTX
5. hello popescu
PPTX
4. forme in zend framework 3
PPTX
3. trimiterea datelor la vederi
PPTX
2.routing in zend framework 3
PPTX
1. zend framework intro
PPTX
18. images in symfony 4
PPTX
17. delete data
PPTX
16. edit data
PPTX
15. view single data
PPTX
14. add data in symfony4
PPTX
13. view data
PPTX
12.doctrine view data
PPTX
11. move in Symfony 4
12. edit record
11. delete record
10. view one record
9. add new record
8. vederea inregistrarilor
6. hello popescu 2
5. hello popescu
4. forme in zend framework 3
3. trimiterea datelor la vederi
2.routing in zend framework 3
1. zend framework intro
18. images in symfony 4
17. delete data
16. edit data
15. view single data
14. add data in symfony4
13. view data
12.doctrine view data
11. move in Symfony 4
Ad

Recently uploaded (6)

PDF
Materi seni rupa untuk sekolah dasar materi tentang seni rupa
PDF
Cold positive punishment of the student سزادانی ئەرێنی ساردی قوتابی.pdf
PPTX
Tahfidz Qur’an TIMING tampa musik bagian 2.pptx
PPTX
Madison dsfnsd dslsf sada;sdmas;ds;dls.pptx
PDF
15 AUG 2025 PS 15 AUG 2025 PS 15 AUG 2025 PS
PDF
فورمولر عمومی مضمون فزیک برای همه انجنیران
Materi seni rupa untuk sekolah dasar materi tentang seni rupa
Cold positive punishment of the student سزادانی ئەرێنی ساردی قوتابی.pdf
Tahfidz Qur’an TIMING tampa musik bagian 2.pptx
Madison dsfnsd dslsf sada;sdmas;ds;dls.pptx
15 AUG 2025 PS 15 AUG 2025 PS 15 AUG 2025 PS
فورمولر عمومی مضمون فزیک برای همه انجنیران

14. add in db

  • 1. Adaugarea unei inregistrari in db in sens Laravel (cu validare)
  • 2. Adaugarea de inregistrari in tabela Editati fisierul /app/Http/routes.php astfel: <?php use AppFlower; Route::get('flowers', 'FlowersController@index'); Route::get('flowers/add', 'FlowersController@add'); Route::get('flowers/{nume}', 'FlowersController@show'); ?>
  • 3. Atentie!!! • Daca veti edita fisierul routes.php astfel: <?php use AppFlower; Route::get('flowers', 'FlowersController@index'); Route::get('flowers/{nume}', 'FlowersController@show'); Route::get('flowers/add', 'FlowersController@add'); ?> veti obtine o eroare deoarece framework-ul va astepta un {nume} de inregistrare existent, dupa “flowers” in adresa. Este foarte importata ordinea regulilor de rutare in routes.php!
  • 4. Vederea • Vom crea vederea: /resources/views/flowers/addflower.blade.php<html> <html> <head><title>Add a flower</title></head> <body> <?php echo Form::open(array('action' => 'FlowersController@store')) ; echo Form::label('nume', 'Nume: '); echo Form::text('nume')."<br><br>"; echo Form::label('marime', 'Marime: '); echo Form::text('marime')."<br><br>"; echo Form::label('culoare', 'Culoare: '); echo Form::text('culoare')."<br><br>"; echo Form::label('pret', 'Pret: '); echo Form::text('pret')."<br><br>"; echo Form::submit('Add flower'); echo Form::close(); ?> </body> </html>
  • 5. • In acest moment codul formei generate este: <!DOCTYPE html> <html> <head><title>Add flower</title></head> <body> <h1>Add a flower</h1> <form method="POST" action="http://localhost/laravelproj/public/flowers/add" accept-charset="UTF-8"><input name="_token" type="hidden" value="XYzPAmsxqLSPejkCJlou9PohMyKvQy1i18mVhfvg"> <label for="nume">Nume: </label> <input name="nume" type="text" id="nume"><br/><br/> <label for="culoare">Culoare: </label> <input name="culoare" type="text" id="culoare"><br/><br/> <label for="marime">Marime: </label> <input name="marime" type="text" id="marime"><br/><br/> <label for="pret">Pret: </label> <input name="pret" type="text" id="pret"><br/><br/> <input type="submit" value="Add flower"> </form> </body> </html>
  • 6. • Adaugati metoda FlowersController::add public function add(){ return view('flowers.addflower'); }
  • 7. Se observa ca forma va trimite implicit datele in pagina /flowers/add. Pentru a modifica aceasta adresa, vom scrie: echo Form::open(['url'=>'flowers']) ; Pentru a trimite datele direct in metoda unui controller, vom modifica forma addflower astfel: echo Form::open(array('action' => 'FlowersController@store')) ; In acest caz trebuie adaugata si ruta in routes.php astfel: Route::any('flowers/store', 'FlowersController@store'); si deasemenea vom defini metoda store in FlowersController: public function store(){ return 'Datele nu au fost inserate inca :)'; }
  • 8. • Pentru a putea gestiona datele trimise de forma in metoda controller- ului, va trebui sa modificam codul controller-ului astfel: Inlocuiti linia use IlluminateHttpRequest; cu linia: use Request; apoi va trebui sa editam metoda store astfel:
  • 9. public function store(){ $var=Request::all(); return $var; } Daca vom dori sa afisam doar numele, vom scrie: public function store(){ $nume = Request::input('nume'); return $nume; }
  • 10. • Pentru a salva datele in tabela, vom edita metoda store in controller astfel: public function store(){ $flower=new Flower; $flower->nume=Request::input('nume'); $flower->marime=Request::input('marime'); $flower->culoare=Request::input('culoare'); $flower->pret=Request::input('pret'); $flower->save(); return redirect('/flowers'); }
  • 11. Validarea datelor (metoda1– validarea in controller) • Info: http://laravel.com/docs/5.0/validation Editati metoda store din /app/Http/Controllers/FlowersController astfel: public function store(){ $validator=Validator::make(Request::all(), [ 'nume'=>'required', 'culoare'=>'required', 'marime'=>'required', 'pret'=>'required' ]); if($validator->fails()) return 'failed validation'; $flower=new Flower; $flower->nume=Request::input('nume'); $flower->marime=Request::input('marime'); $flower->culoare=Request::input('culoare'); $flower->pret=Request::input('pret'); $flower->save(); return redirect('/flowers'); }
  • 12. • Daca veti incerca sa vizualizati • http://localhost/paravelproj/public/flowers/add si apoi incercati sa inserati o inregistrare vida, veti obtine o eroare deoarece nu va fi “vazuta” clasa Validator. • Pentru a elimina eroarea puteti utiliza metodele: METODA1: Adaugati linia: use Validator; in controllerul FlowersController sau METODA2: Scrieti codul validatorului asttfel: $validator=Validator::make(Request::all(), [ 'nume'=>'required', 'culoare'=>'required', 'marime'=>'required', 'pret'=>'required' ]); Apoi veti obtine output-ul:
  • 13. • Pentru a verifica fiecare camp separat si a afisa mesaje de eroare specifice, vom edita validarea din metoda store astfel: public function store(){ $validation=Validator::make(Request::all(), [ 'nume'=>'required', 'culoare'=>'required', 'marime'=>'required', 'pret'=>'required' ]); if($validation->fails()){ return redirect()->back()->withInput()->withErrors($validation->messages()); } $flower=new Flower; $flower->nume=Request::input('nume'); $flower->marime=Request::input('marime'); $flower->culoare=Request::input('culoare'); $flower->pret=Request::input('pret'); $flower->save(); return redirect('/flowers'); }
  • 14. • Editati si vederea /resources/views/flowers/addflower.blade.php astfel: <!DOCTYPE html> <html> <head><title>Add a flower</title></head> <body> <?php echo Form::open(array('action' => 'FlowersController@store')) ; echo Form::label('nume', 'Nume: '); echo Form::text('nume'); echo $errors->first('nume')."<br/><br/>"; echo Form::label('marime', 'Marime: '); echo Form::text('marime'); echo $errors->first('marime')."<br/><br/>"; echo Form::label('culoare', 'Culoare: '); echo Form::text('culoare'); echo $errors->first('culoare')."<br/><br/>"; echo Form::label('pret', 'Pret: '); echo Form::text('pret'); echo $errors->first('pret')."<br/><br/>"; echo Form::submit('Add flower'); echo Form::close(); ?> </body> </html>Daca veti incerca sa adaugati o interistrare vida http://localhost/paravelproj/public/flowers/add , veti obtine:
  • 15. Eliminarea erorii: No supported encrypter found. The cipher and / or key length are invalid. In fereastra de comanda scrieti: php artisan key:generate
  • 16. Validarea datelor (metoda2– validarea in model) • In acest caz, editati fisierul model /app/Flower.php astfel: <?php namespace App; use IlluminateDatabaseEloquentModel; class Flower extends Model { protected $fillable=['nume','marime','culoare','pret']; public $timestamps=false; protected $table = 'flowers'; public static $rules=[ 'nume'=>'required', 'culoare'=>'required', 'marime'=>'required', 'pret'=>'required' ]; }
  • 17. • Deasemenea editati metoda store din controllerul FlowersController astfel: public function store(){ $validation=Validator::make(Request::all(),Flower::$rules); if($validation->fails()){ return redirect()->back()->withInput()->withErrors($validation->messages()); } $flower=new Flower; $flower->nume=Request::input('nume'); $flower->marime=Request::input('marime'); $flower->culoare=Request::input('culoare'); $flower->pret=Request::input('pret'); $flower->save(); return redirect('/flowers'); } Daca veti incerca sa adaugati o interistrare vida http://localhost/paravelproj/public/flowers/add , veti obtine:
  • 18. • Pentru a face validarea numai in model, editati modelul Flower.php: <?php namespace App; use IlluminateDatabaseEloquentModel; use Validator; class Flower extends Model { public static $errors; protected $fillable=['nume','marime','culoare','pret']; public $timestamps=false; protected $table = 'flowers'; public static $rules=[ 'nume'=>'required', 'culoare'=>'required', 'marime'=>'required', 'pret'=>'required' ]; public static function isValid($data){ $validation=Validator::make($data,static::$rules); if($validation->passes()) return true; static::$errors=$validation->messages(); return false; } } ?>
  • 19. • In acest caz metoda store din controller devine: public function store(){ if(!Flower::isValid(Request::all())){ return redirect()->back()->withInput()->withErrors(Flower::$errors); } $flower=new Flower; $flower->nume=Request::input('nume'); $flower->marime=Request::input('marime'); $flower->culoare=Request::input('culoare'); $flower->pret=Request::input('pret'); $flower->save(); return redirect('/flowers'); }