Laravel Course

- Retrieving Input data from form

To can obtain an instance of the current HTTP request in a controller, you should use the Illuminate\Http\Request class in your controller, and the Request $request parameter in controller method.
If the controller method is also expecting input from a route parameter you should list your route parameters after $request parameter.
- For example, if a "test" route is defined like so:
Route::name('test')->get('test/{id}', 'TestController@index');
A TestController class in a "TestController.php" file (in app/Http/Controllers/ directory) might look like this:
<?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');
  }
}

Request Path and Method

The $request object provides a variety of methods for examining the HTTP request.
See this page for a complete List with Request Methods

- Example:
1. Add the following code in the "TestController.php" file:
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. Add the following code in a file "test.blade.php" (in the "resources/views/" folder):
<!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. Add the following line in the "routes/web.php" file:
Route::name('test_pg')->get('/test/{name?}', 'TestController@index');
4. Visit the following URL:
//localhost:8000/test/peace
- The output will appear as shown in the following image.
laravel request path methods

Retrieving Input data from form

No matter what method was used GET or POST, the Laravel method will retrieve input values for both the methods the same way. You can retrieve the input values using either of these variantes:

Determining if an Input Value is Present

It is indicated to use the has() method to determine if a value is present on the request.
The has() method returns true if the value is present:
if($request->has('name')){
  //
}
When given an array, the has() method will determine if all of the specified values are present:
if($request->has(['name', 'email'])){
  //
}

- Example:
1. Add the following code in the "TestController.php" file (in app/Http/Controllers/ directory):
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. Create a "register_form.blade.php" file in the "resources/views/" folder, with this code:
<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>
The {{ csrf_field() }} statement adds a "hidden" input field in the form. That field contains the CSRF "token", which is automatically generated by Laravel framework to protect the application from cross-site request forgery (CSRF) attacks.
You should use the {{ csrf_field() }} statement to include a hidden CSRF token field in each form so that the CSRF protection middleware can validate the request.
3. Add the following code in the "routes/web.php" file:
//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. Visit the following URL, and add some data in form fields:
//localhost:8000/register
- It will display a page like in this image:
laravel request test register
5. Click Register button, it will open a page with the user registration details, as shown in the following image:
laravel request user data

- Documentation: Laravel - Requests

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which HTML element can be used to embed a SWF flash content?
<object> <div> <script>
<object type="application/x-shockwave-flash" data="file.swf" width="500" height="250">
 <param name="src" value="file.swf" />
 Your browser not support SWF.
</object>
Which CSS pseudo-class adds a style to an input form field that has keyboard input focus?
:active :focus :hover
input:focus {
  background-color: #88fe88;
}
Click on the instruction which converts a JSON string into a JavaScript object.
JSON.stringify(javascript_object) object.toString() JSON.parse(json_string)
var jsnstr = '{"url": "http://coursesweb.net/", "title": "Web Development Courses"}';
var obj = JSON.parse(jsnstr);
alert(obj.url);
Indicate the PHP function which can be used to create or write a file on server.
fopen() file_put_contents() file_get_contents()
if (file_put_contents("file.txt", "content")) echo "The file was created";
else echo "The file can not be created";
Requests

Last accessed pages

  1. Using v-model in form input fields (1051)
  2. jQuery UI draggable - Drag elements (11445)
  3. Display data from PHP Array, or MySQL in HTML table (26980)
  4. Redirects (4978)
  5. jsSHA - SHA Hashes and HMAC in JavaScript (3519)

Popular pages this month

  1. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (310)
  2. The Mastery of Love (48)
  3. CSS cursor property - Custom Cursors (36)
  4. Read Excel file data in PHP - PhpExcelReader (35)
  5. PHP-MySQL free course, online tutorials PHP MySQL code (31)