Liens
Description
Framework PHP MVC
Layout
resources/views/layouts/master.blade.php
|
<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
</head>
<body>
@yield('content')
</body>
</html>
|
resources/views/welcome.blade.php
|
@extends('layouts.master')
@section('content')
<h1>Some Content</h1>
@endsection
|
Partial View
resources/views/partials/header.blade.php
|
|
|
@include('partials.header')
|
|
php artisan route:list
|
routes/web.php
|
Route::get('/', function () {
return view('welcome');
})->name('root');
Route::get('/mycontroller/{id}', function ($id) {
return view('blog.index', ['id' => $id]);
})->name('index');
Route::group(['prefix' => 'mycontroller'], function () {
Route::get('myaction1/{id}', function ($id) {
return view('mycontroller.action1');
})->name('action1');
Route::get('myaction2/{id}', function ($id) {
return view('mycontroller.action2');
})->name('action2');
});
Route::post('create', function(Request $request) {
return redirect()->route('index');
});
|
|
<a href="/">Root</a>
<a href="/index/1">Index</a>
<a href="{{ route('root') }}">Root</a>
<a href="{{ route('index', ['id' => 1]) }}">Index</a>
|
Responses
|
return view('folder.view1', ['var1' => $var1]);
return "Texte brut";
return Respounse::json(['key' => 'value']);
return redirect()->route('index');
|
Blade
|
{{-- Don't put the closing PHP comment */ in your comment --}}
|
if
|
@if($myVar == 0)
<p>Zéro!</p>
@elseif($myVar == 1)
<p>Un!</p>
@else
<p>Autre!</p>
@endif
|
foreach
|
@foreach($myCollection as $item)
<li>{{ $item }}</li>
@endforeach
|
for
|
@for($i = 0; $i < 5; $i++)
<li>{{ $i }}</li>
@endfor
|
XSS
|
{{ "<script>alert('XSS');</script>" }}
{!! "<script>alert('XSS');</script>" !!}
|
CSS
|
<link rel="stylesheet" href="css/myStyles.css">
|
|
php artisan make:controller MyController
|
app/Http/Controllers/MyController.php
|
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Session\Store;
class MyController extends Controller
{
private $model;
function __construct()
{
$this->model = new Model();
}
public function getAllItems(Store $session)
{
$items = $this->myModel->getAllItems($session);
return view('index', ['items' => $items]);
}
public function editItem($id, Store $session)
{
$item = $this->model->getItem($id, $session);
return view('edit', ['item' => $item]);
}
public function updateItem($id, Store $session, Request $request)
{
$item = $this->model->getItem($id, $session);
$item->name = $request->input('name');
return redirect(route('home'));
}
}
|
routes/web.php
|
Route::get('/', [
'uses' => 'MyController@getAllItems',
'as' => 'home'
]);
Route::get('/', 'MyController@getAllItems')->name('home');
Route::get('/edit/{id}', [
'uses' => 'MyController@editItem',
'as' => 'edit'
]);
Route::post('/edit/{id}', [
'uses' => 'MyController@updateItem',
'as' => 'update'
]);
|
Model
apps/MyModel.php
|
<?php
namespace App;
class MyModel
{
public function getItems($session)
{
if (!$session->has('items')) {
$this->fillData($session);
}
return $session->get('items');
}
private function fillData($session)
{
$items = [ 'item1', 'item2' ];
$session->put('items', $items);
}
}
|
|
npm run dev
npm run production
npm run watch
|
webpack.mix.js
|
let mix = require('laravel-mix');
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
|
|
npm install -g gulp
npm install
npm install --save-dev laravel-elixir
gulp
gulp watch
|
gulpfile.js
|
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.sass("app.scss");
});
|
|
<link href="{{ asset('css/app.css') }}" rel="stylesheet" type="text/css" >
|
resources/assets/sass/app.scss
|
@import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600");
@import "variables";
@import 'node_modules/bootstrap/scss/bootstrap';
.navbar-laravel {
background-color: #fff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
|
Font Awesome
|
npm install font-awesome --save
|
resources/assets/sass/app.scss
|
@import "node_modules/font-awesome/scss/font-awesome";
|
|
npm run dev
|
MSBUILD : error MSB3428: Could not load the Visual C++ component "VCBuild.exe"
|
npm install --global --production windows-build-tools
|
|
@if(count($errors->all()))
<div class="row">
<div class="col-md-12">
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
|
app/Http/Controllers/MyController.php
|
public function postCreate(Store $session, Request $request)
{
$this->validate($request, [
// input id => builtin rules
'login' => 'required|min:3'
]);
}
|
routes/web.php
|
Route::post('create', function(Request $request, Factory $validator)) {
$validation = $validator->make($request->all(), [
// input id => builtin rules
'login' => 'required|min:3'
]);
if ($validation->fails()) {
return redirect()->back()->withErrors($validation);
}
}
|
|
$session->put('key', $item);
$item = $session->get('key');
$session->forget('key');
$items = [ new Item(1, 'item1'), new Item(2, 'item2') ];
$session->put('main_key', $items);
if(($array_key = array_search($item, $items, true)) !== FALSE) {
$session->forget('main_key.' . $array_key);
}
$session->push('key', $item);
|
routes/web.php
|
Route::post('edit', function(Request $request) {
return redirect()
->route('index')
->with('info', 'My value: ' . $request->input('value1'));
})->name('update');
|
|
@if(Session::has('info'))
{{ Session::get('info') }}
@endif
|
form
|
composer require "laravelcollective/html"
|
|
{{ Form::open(['route' => ['myroute', $var1]]) }}
{{ Form::open(['action' => ['MyController@myaction', $var1]]) }}
{{ Form::text('name', $value = $var2) }}
{{ Form::submit('Yes', ['name' => 'yes', 'class' => 'btn btn-danger btn-xs']) }}
{{ Form::submit('No', ['name' => 'no', 'class' => 'btn btn-danger btn-xs']) }}
{{ Form::close() }}
|
|
if ($request->input('yes')) {
}
|
CSRF Protection
Mécanisme de protection contre les urls malicieuses fabriquées.
|
<form>
<input type="text" name="field1">
<input type="hidden" name="_token" value="{{csrf_token()}}">
{{ csrf_field() }}
<button type="submit">
</form>
|
 |
- Pas de Formatting pour le code PHP
|
Extensions:
- Laravel Extension Pack
- Laravel Blade Snippets
- Laravel 5 Snippets
- Laravel Artisan
- PHP Extensions
- PHP Debug
- PHP Intellisense
- EditorConfig for VS Code
- phpfmt, formatter code PHP avec Alt + Shift + F
IDE
Visual Studio Code |
gratuit
|
Netbeans |
gratuit
|
Atom |
gratuit
|
PHP Storm |
payant
|
Sublime Text |
payant
|
Codelobster |
|
Erreurs
Missing required parameters for [Route: myroute] [URI: myaction/{id}]. (View: /resources/views/myview.blade.php)
/resources/views/myview.blade.php
|
{{ Form::open(['action' => 'MyController@myaction']) }}
{{ Form::open(['action' => ['MyController@myaction', 'id='.$item->id]]) }}
|
routes/web.php
|
Route::post('/myaction/{id}', [
'uses' => 'MyController@myaction',
'as' => 'myroute'
]);
|
Action App\Http\Controllers\MyController@MyAction not defined
Vérifier que le fichier routes/web.php contienne bien une route qui utilise MyController@MyAction
routes/web.php
|
Route::post('/MyController/MyAction', [
'uses' => 'MyController@MyAction',
'as' => 'MyRoute'
]);
|
|
composer require "laravelcollective/html"
|
Vérifier la config Nginx
unexpected '?' in helpers.php on line 233
Parse error: syntax error, unexpected '?' in C:\wamp64\www\laravel\vendor\laravel\framework\src\Illuminate\Foundation\helpers.php on line 233
Passer à PHP 7
Archlinux
|
pacman -S composer
composer global require "laravel/installer"
laravel new MonDossier
composer create-project --prefer-dist laravel/laravel MyLaravelProject
sudo -u http composer create-project laravel/laravel MyLaravelProject
sudo chown root:root MyLaravelProject
chown -R http:http storage/
|
/etc/nginx/laravel.conf
|
server {
listen 80;
server_name laravel.my-domain.fr;
root /srv/http/laravel/public;
index index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location = /index.php {
include uwsgi_params;
uwsgi_modifier1 14;
uwsgi_pass unix:/run/uwsgi/laravel.sock;
}
location = /index.php {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
include /etc/nginx/fastcgi.conf;
}
}
|
/etc/uwsgi/laravel.ini
|
[uwsgi]
processes = 4
uid = http
gid = http
socket = /run/uwsgi/%n.sock
master = true
chdir = /srv/http/%n/public
plugins = php
php-sapi-name = apache
php-docroot = /srv/http/%n/public
php-index = index.php
vacuum = true
|
|
mkdir C:\wamp64\www\laravel
cd C:\wamp64\www\laravel
composer create-project laravel/laravel MyLaravelProject --prefer-dist
|
C:\wamp64\bin\apache\apache2.x.x\conf\extra\httpd-vhosts.conf
|
<VirtualHost *:8080>
ServerName laravel
DocumentRoot "c:/wamp64/www/laravel/public"
<Directory "c:/wamp64/www/laravel/public/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
|