Справка по laravel
Капустин Яков
оглавление
- 01 Migration
- 02 Model
- 03 Controller
- 04 Route
- 05 View
- 06 Настройка
- 07 Настройка
- 08 Настройка
- 09 Настройка
- 10 Настройка
- 11 Настройка
- 12 Настройка
- 13 Настройка
- 14 Настройка
- 15 Настройка
- 16 Настройка
- 17 Список использованной литературы
01Migration
Создание миграции 'create_projects_table' с помощью artisan:
bash:vagrant@homestead:~/projects/scratch$ php artisan make:migration create_projects_table Created Migration: 2019_02_08_235353_create_projects_table vagrant@homestead:~/projects/scratch$
В результате выполнения команды создаётся файл database/migrations/2019_02_08_235353_create_projects_table.php, описывающий класс CreateProjectsTable, создающий или удаляющий (при выполнении методов up/down) таблицу projects.
02Model
Для взаимодействия с создаваемой указанной выше миграцией таблицей создадим модель:
bash:vagrant@homestead:~/projects/scratch$ php artisan make:model Project Model created successfully. vagrant@homestead:~/projects/scratch$
В результате выполнения команды создаётся файл app/Project.php, описывающий класс CreateProjectsTable, наследующий класс Model.
02
03
04
05
06
07
08
09
10
11
12
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Project extends Model
{
//
}
Воспользуемся ключами и создадим модель Task вместе с контроллером, фабрикой и файлом миграции:
bash:vagrant@homestead:~/projects/scratch$ php artisan make:model Task -m -f -c Model created successfully. Factory created successfully. Created Migration: 2019_02_17_200558_create_tasks_table Controller created successfully. vagrant@homestead:~/projects/scratch$
В результате выполнения команды создаётся файл app/Project.php, описывающий класс CreateProjectsTable, наследующий класс Model.
02
03
04
05
06
07
08
09
10
11
12
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Project extends Model
{
//
}
03Controller
При создании контроллера необходимо указать его имя вида 'NametablesController':
bash:vagrant@homestead:~/projects/scratch$ php artisan make:controller ProjectsController Controller created successfully. vagrant@homestead:~/projects/scratch$
В результате выполнения команды создаётся файл app/Http/Controllers/ProjectsController.php, описывающий класс ProjectsController, наследующий класс Controller.
02
03
04
05
06
07
08
09
10
11
12
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProjectsController extends Controller
{
//
}
Если при создании контроллера воспользоваться ключами, то можно создать одной командой контроллер с предварительно объявленными методами и модель для него:
bash:vagrant@homestead:~/projects/scratch$ php artisan make:controller ProjectsController -r -m Project A App\Project model does not exist. Do you want to generate it? (yes/no) [yes]: > Model created successfully. Controller created successfully. vagrant@homestead:~/projects/scratch$
В результате выполнения команды создаётся файл app/Http/Controllers/ProjectsController.php, описывающий класс ProjectsController, наследующий класс Controller с типичными методами (index, create, show, edit, update и destroy) и модель Project. В файле также будет импортирован класс создаваемой модели: 'use App\Project;'.
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
namespace App\Http\Controllers;
use App\Project;
use Illuminate\Http\Request;
class ProjectsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Project $project
* @return \Illuminate\Http\Response
*/
public function show(Project $project)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Project $project
* @return \Illuminate\Http\Response
*/
public function edit(Project $project)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Project $project
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Project $project)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Project $project
* @return \Illuminate\Http\Response
*/
public function destroy(Project $project)
{
//
}
}
04Route
Роут указывает приложению на необходимость вызова определенного метода определённого контроллера (передаются во втором аргументе) при совпадении строки запроса со строкой, указанной в первом аргументе а также типа запроса.
2
3
4
5
...
Route::get('/projects', 'ProjectsController@index');
...
bash:vagrant@homestead:~/projects/scratch$ php artisan route:list +--------+----------+----------+------+-----------------------------------------------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+----------+------+-----------------------------------------------+--------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | projects | | App\Http\Controllers\ProjectsController@index | web | +--------+----------+----------+------+-----------------------------------------------+--------------+ vagrant@homestead:~/projects/scratch$
Альтернативный способ объявления с созданием типичных роутов:
2
3
4
5
6
...
// Route::get('/projects', 'ProjectsController@index');
Route::resource('projects', 'ProjectsController');
...
bash:vagrant@homestead:~/projects/scratch$ php artisan route:list +--------+-----------+-------------------------+------------------+-------------------------------------------------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+-----------+-------------------------+------------------+-------------------------------------------------+--------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | projects | projects.index | App\Http\Controllers\ProjectsController@index | web | | | POST | projects | projects.store | App\Http\Controllers\ProjectsController@store | web | | | GET|HEAD | projects/create | projects.create | App\Http\Controllers\ProjectsController@create | web | | | GET|HEAD | projects/{project} | projects.show | App\Http\Controllers\ProjectsController@show | web | | | PUT|PATCH | projects/{project} | projects.update | App\Http\Controllers\ProjectsController@update | web | | | DELETE | projects/{project} | projects.destroy | App\Http\Controllers\ProjectsController@destroy | web | | | GET|HEAD | projects/{project}/edit | projects.edit | App\Http\Controllers\ProjectsController@edit | web | +--------+-----------+-------------------------+------------------+-------------------------------------------------+--------------+ vagrant@homestead:~/projects/scratch$
05View
За вывод полученных данных отвечает уровень отображения, файлы которого хранятся в директории resources/view. Наименования файлов обычно формируются из имени_таблицы/имени_метода.blade.php.
Передача скрытых полей для защиты от CSRF-атаки и передачи метода. Ниже представлены равноценные способы:
2
3
4
5
6
7
...
<form>
{{ csrf_field() }}
{{ method_field('DELETE') }}
...
2
3
4
5
6
7
...
<form>
@csrf
@method('DELETE')
...
17Список использованной литературы
Капустин Яков (2019.02.15 01:26)