- Preluare date din formular

Pentru a obtine o instanta a HTTP accesarii curente intr-un controller, se foloseste clasa Illuminate\Http\Request in controller si parametrul Request $request in metoda controller-ului.
Daca metoda controller foloseste si date de la parametri Route, se adauga parametri route dupa parametrul $request.
- De exemplu, daca un route "test" este definit asa:
Route::name('test')->get('test/{id}', 'TestController@index');
O clasa TestController intr-un fisier "TestController.php" (in directorul app/Http/Controllers/ ) ar arata asa:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class TestController extends Controller {

  //Responds to requests to /test
  //receives the $request instane, $id from URI
  //returns view() response
  public function index(Request $request, $id){
    return view('test');
  }
}

Metode si adrese Request

Obiectul $request furnizeaza o varietate de metode pentru examinarea cererii HTTP.
Vezi pagina aceasta pentru o lista completa cu Metode Request

- Exemplu:
1. Adauga urmatorul cod in fisierul "TestController.php":
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class TestController extends Controller {

  //Responds to requests to /test
  //receives the $request instance, $id from URI
  //returns view() response
  public function index(Request $request, $name=''){
    //Usage of is() method
    $is_uri = $request->is('test/*');

    //set array with keys to be passed to view() for template
    $data =[
      'name'=>$name,
      'uri'=>$request->path(),
      'url'=>$request->url(),
      'is_uri'=>$is_uri ?'URI matches the "test/*" pattern' :'URI not matches the "test/*" pattern',
      'method'=>$request->method()
    ];

    return view('test', $data);
  }
}
2. Adauga urmatorul cod in fisierul "test.blade.php" (in directorul "resources/views/"):
<!doctype html>
<html lang="{{app()->getLocale()}}">
<head>
<meta charset="utf-8">
<title>Test Page</title>
</head>
<body>
<h1>Test page</h1>
NAME ARGUMENT: {{$name}}<br>
URI: {{$uri}}<br>
URL: {{$url}}<br>
METHOD: {{$method}}<br>
is() METHOD: {{$is_uri}}
</body>
</html>
3. Adauga urmatoarea linie in fisierul"routes/web.php":
Route::name('test_pg')->get('/test/{name?}', 'TestController@index');
4. Viziteaza URL-ul de mai jos:
//localhost:8000/test/peace
- Rezultatul va fi ca in imaginea urmatoare.
laravel request path methods

Preluare date din formular

Indiferent ce metoda a fost folosita, GET sau POST, obiectul $request va return valorile input pentru ambele metodele in acelasi fel. Poti prelua datele din formular folosind oricare din variatele:

Verificare daca o valoare Input este prezenta

Este indicat sa folositi metoda has() pentru a verifica daca un anume camp de formular este prezent in cerere.
Metoda has() returneaza true daca valoarea este prezenta:
if($request->has('name')){
  //
}
Cand este dat un array, metoda has() va determina daca toate valorile specificate sunt prezente:
if($request->has(['name', 'email'])){
  //
}

- Exemplu:
1. Adauga urmatorul cod in fisierul "TestController.php" (in directorul app/Http/Controllers/):
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class TestController extends Controller {

  //Responds to requests to /test
  //receives the $request instance, $id from URI
  //returns view() response
  public function index(Request $request, $name=''){
    //Usage of is() method
    $is_uri = $request->is('test/*');

    //set array with keys to be passed to view() for template
    $data =[
      'name'=>$name,
      'uri'=>$request->path(),
      'url'=>$request->url(),
      'is_uri'=>$is_uri ?'URI matches the "test/*" pattern' :'URI not matches the "test/*" pattern',
      'method'=>$request->method()
    ];

    return view('test', $data);
  }

  //Responds to post requests to /user/register
  //receives the $request instance
  //outputs input fields data, or message
  public function userRegister(Request $request){
    //if required fields are received, and not empty
    if($request->has(['name', 'username', 'password']) && $request->name!=null && $request->username!=null && $request->password!=null){
      //Retrieve the name input field
      $name = $request->input('name');
      echo 'Name: '.$name .'<br>';

      //Retrieve the username input field
      $username = $request->username;
      echo 'Username: '.$username .'<br>';

      //Retrieve the password input field
      $password = $request->password;
      echo 'Password: '.$password;
    }
    else echo 'Please fill all the form fields';
  }
}
2. Creaza un fisier "register_form.blade.php" in directorul "resources/views/", cu acest cod:
<form method="post" action="/user/register">
{{ csrf_field() }}
<label>Name: <input type='text' name='name'/></label><br>
<label>Username: <input type='text' name='username'/></label><br>
<label>Password: <input type='password' name='password'/></label><br>
<input type='submit' value='Register'/>
</form>
Afirmatia {{ csrf_field() }} adauga un camp input "ascuns" in formular. Campul contine "codul" CSRF care este generat automat de framework-ul Laravel pentru a proteja aplicatia de atacuri cross-site request forgery (CSRF).
Se foloseste: {{ csrf_field() }} pentru a include un camp cu codul CSRF in fiecare formular pentru ca middleware-ul pentru protectie CSRF sa poata valida request-ul.
3. Adauga urmatorul cod in fisierul "routes/web.php":
//shows the register form
Route::get('/register',function(){
  return view('register_form');
});

//when the register form is submited
Route::post('/user/register', 'TestController@userRegister');
4. Viziteaza urmatorul URL si adauga date in campurile formularului:
//localhost:8000/register
- Va afisa o pagina ca aceasta:
laravel request test register
5. Apasa butonul Register, va deschide o pagina cu detaliile de inregistrare a utilizatorului, cum se vede in imaginea urmatoare:
laravel request user data

- Documentatie: Laravel - Requests

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce atribut e folosit in tag-ul <a> pentru adresa link-ului?
src href rel
<a href="http://coursesweb.net/" title="CoursesWeb.net">CoursesWeb.net</a>
Ce proprietate CSS seteaza tipul fontului utilizat?
font-family text-decoration font-size
h2 {
  font-family:"Calibri", sans-serif;
}
Ce instructiune selecteaza toate tag-urile <div> cu class="cls"?
querySelector("div.cls") getElementsByTagName("div") querySelectorAll("div.cls")
var elm_list = document.querySelectorAll("div.cls");
var nr_elms = elm_list.length;       // numar elemente selectate
alert(nr_elms);
Indicati functia care returneaza suma valorilor dintr-un array.
array_sum() array_diff() array_shift()
$arr =[1, 2, 3, 4);
$arr_sum = array_sum($arr);
echo $arr_sum;       // 10
Indicati forma corecta a verbului "study" (a studia) la Trecutul Simplu in aceasta propozitie: "We (study) English."
studyed studys studied
We studied English.
- Noi am studiat engleza.
Indicati forma corecta a verbului "decir" (a spune) la Prezent in aceasta propozitie: "Yo (decir) siempre la verdad."
digas digo decir
Yo digo siempre la verdad.
- Eu spun mereu adevarul.
Laravel Requests - Cereri HTTP

Last accessed pages

  1. Blog si Cugetari Personale (10466)
  2. Gramatica limbii engleze - Prezentare Generala (120148)
  3. Curs si Tutoriale Ajax (10874)
  4. Cursuri limba engleza gratuite si lectii online (30259)
  5. Trecut perfect continuu - Exercitii si teste incepatori (2428)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (7727)
  2. Curs HTML gratuit Tutoriale HTML5 (6376)
  3. Curs si Tutoriale JavaScript (5598)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (5457)
  5. Curs CSS Online Tutoriale CSS3 (5300)