Laravel: Difference between revisions
Adamcolton (talk | contribs) |
Adamcolton (talk | contribs) No edit summary |
||
| Line 96: | Line 96: | ||
=== Route Resource === | === Route Resource === | ||
Implements restful crud. | Implements restful crud. | ||
== Middleware == | |||
All methods have the same args $request and $next and the continue by calling $next($request); | |||
In http/Kernal.php, every piece of middleware in $middleware is run against every request. | |||
Middleware can be attached in a controllers constructor: | |||
public function __construct(){ | |||
$this->middleware('auth'); | |||
} | |||
== Research These == | == Research These == | ||
* https://github.com/laracasts/Laravel-5-Generators-Extended | * https://github.com/laracasts/Laravel-5-Generators-Extended | ||
Revision as of 22:27, 22 January 2016
Implicit Route Binding
From this video
Route::get('users/{user}', function(App\User $user){
return $user;
});
If the arg name matches the token, it will magic that value into place. With the type hinting, it will find a user with the primary key given in the url.
To use something other than the primary key, you have to add a route binding in RouteServiceProvider.
Auth
php artisan make:auth
Creates a bunch of views, routes and adds a controller.
Easiest is to use 'sendmail'. Make sure to set 'from' in config/mail.php.
Homestead
I'll need to try setting up a homestead instance on AWS with Vagrant. Could be useful to know for other projects too.
Illuminate/html
composer require illuminate/html
Then in config/app.php, add 'Illuminate\Html\HtmlServiceProvider' to the providers array and 'Form' => 'Illuminate\Html\FormFacade' to the aliases array.
This seems to be the most up-to-date documentation.
Request
$input = Request::all();
$foo = Request::get('foo');
Gets all inputs from get and post.
Good shorthand
$input = Request::all(); SomeModel::create($input);
Eloquent
The $fillable property limits which properties can be assigned.
Accessors and Mutators
Accessors modify data coming from the database before it's inserted in the model. Mutators modify it before inserting.
A mutator method must have a name following the pattern setFieldNameAttribute
Query Scope
Name is scopeName, takes a query as an arg. Useful for attaching repeated query logic to the model.
Relationships
One-to-many (author to article)
//in the 'one' (author)
public function articles(){
return $this->hasMany('App\Articles');
}
//in the 'many' (article)
public function author(){
return $this->belongsTo('App\user');
}
Many-to-many
Form Requests
php artisan make:requestion NameOfRequest
Starts with the methods authorize and rules.
Rules returns an array of fields and their validation logic.
Validators
- required
- min:n
- date
Authorize returns a bool.
If validation fails, it's redirected back to the previous page with $errors populated with proper errors.
Form requests are implemented with type hinting on the controller.
The controller method looks like this:
public function someMethod(SomeRequest $request){
Model::create(request->all());
return redirect('someplace');
}
Direct Validation
Rather than creating a form request, we can do this
public function someMethod(Request $request){
$this->validate($request, ['title' => 'required|min:3']);
Model::create(request->all());
return redirect('someplace');
}
Routes
php artisan route:list
Shows a table of the routes.
Route Resource
Implements restful crud.
Middleware
All methods have the same args $request and $next and the continue by calling $next($request);
In http/Kernal.php, every piece of middleware in $middleware is run against every request.
Middleware can be attached in a controllers constructor:
public function __construct(){
$this->middleware('auth');
}