- 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
Care tag este element de tip bloc?
<div> <img> <span>
<div>Web Programming and Development</div>
Care cod CSS afiseaza textul subliniat?
font-style: italic; text-decoration: underline; font-weight: 500;
h2 {
  text-decoration: underline;
}
Clic pe functia JavaScript care apeleaza o alta functie dupa un anumit timp.
insertBefore() setTimeout() querySelector()
function someFunction() { alert("CoursesWeb.net"); }
setTimeout("someFunction()", 2000);
Clic pe instructiunea care returneaza numarul total de elemente dintr-un array asociativ.
count($array) count($array, 1) strlen()
$food =["fruits" =>["banana", "mar"), "veggie" =>["ceapa", "rosie"));
$nr_food = count($food, 1);
echo $nr_food;       // 6
Indicati Viitorul Perfect la negativ al verbului din paranteze, in propozitia: "The child (to not play) by Sunday".
has't played haven't been playing will haven't played
The child will haven't played by Sunday.
- Copilul nu s-ar fi jucat pana duminica.
Indicati Viitorul Perfect pentru verbul "contar" (a povesti) la forma "Él".
habrá contado va a contar contaba
Él no habrá contado el cuento.
- El nu ar fi spus povestea.
Laravel Requests - Cereri HTTP

Last accessed pages

  1. Numerale, Numere in limba engleza - Numerals (8626)
  2. Titluri, Paragrafe, Un nou rand, Linie orizontala (4281)
  3. Substantivul din limba engleza - The Noun (7744)
  4. Gramatica limbii engleze - Prezentare Generala (31982)
  5. Less or Fewer - Exercitii Engleza (550)

Popular pages this month

  1. Bubbles3 (4290)
  2. Gramatica limbii engleze - Prezentare Generala (2775)
  3. Butterfly Kyodai (2437)
  4. Cursuri si Tutoriale: Spaniola, Engleza, HTML, CSS, Php-Mysql, JavaScript, Ajax (2009)
  5. Curs HTML gratuit Tutoriale HTML5 (1997)