среда, 30 августа 2017 г.

Laravel. Блог. Контроллеры


Создадим контроллер.


php artisan make:controller Admin/PostController
Он будет создан по адресу: \app\Http\Controllers\Admin\PostController.php

Чтобы создать контроллер с CRUD нужно написать:
php artisan make:controller Admin/PostController —resource

Закомментируем все маршруты для админ-зоны.
Создадим маршрут-ресурс.
Route::resource('admin/post', 'Admin\PostController');

Проверим все существующие контроллеры, задав команду в консоле: php artisan route:list

Идем в \app\Http\Controllers\Admin\PostController.php
public function index()
{
return view('admin.post.post');
}

У нас отображается сайт по адресу: http://blog.my/admin/post

Переместим этот вид в создание формы:
public function create()
{
return view('admin.post.post');
}
У нас создание будет доступно по адресу: http://blog.my/admin/post/create

Создадим другие контроллеры.
php artisan make:controller Admin/TagController --resource
php artisan make:controller Admin/CategoryController --resource

Создадим маршрут-ресурс в web.php
Route::resource('admin/tag', 'Admin\TagController');
Route::resource('admin/category', 'Admin\CategoryController');

Идем в \app\Http\Controllers\Admin\TagController.php
public function create()
{
return view('admin.tag.tag');
}

Создание тегов: http://blog.my/admin/tag/create

Идем в \app\Http\Controllers\Admin\CategoryController.php
public function create()
{
return view('admin.category.category');
}
Создание тегов: http://blog.my/admin/category/create
Создадим контроллеры для пользовательской части.
php artisan make:controller User/PostController

php artisan make:controller User/HomeController

Откроем \app\Http\Controllers\UserHomeController\HomeController.php
и создадим функцию index()
public function index() {
return view('user.blog');
}

Откроем \app\Http\Controllers\UserHomeController\PostController.php
и создадим функцию index()
public function index() {
return view('user.post');
}

Идем в \routes\web.php
Route::get('/', 'User\HomeController@index');
Route::get('post', 'User\PostController@index')->name('post');

Чтобы не писать в маршрутах User\ сгруппируем их.
<?php

// User Routes
Route::group(['namespace' => 'User'], function() {
Route::get('/', 'HomeController@index');
Route::get('post', 'PostController@index')->name('post');
});


// Admin Routes
Route::group(['namespace' => 'Admin'], function() {
Route::resource('admin/post', 'PostController');
Route::resource('admin/tag', 'TagController');
Route::resource('admin/category', 'CategoryController');
});


Создадим контроллер для домашней админской страницы:
php artisan make:controller Admin/HomeController

Напишем маршрут:
// Admin Routes
Route::group(['namespace' => 'Admin'], function() {
Route::get('admin/home', 'HomeController@index')->name('admin.home');
Route::resource('admin/post', 'PostController');
Route::resource('admin/tag', 'TagController');
Route::resource('admin/category', 'CategoryController');
});


Идем в контроллер \app\Http\Controllers\Admin\HomeController.php

<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class HomeController extends Controller
{
public function index() {
return view('admin/home');
}

}

Поработаем на ссылками в сайд-баре.
\resources\views\admin\layouts\sidebar.blade.php
<aside class="main-sidebar">
<!-- sidebar: style can be found in sidebar.less -->
<section class="sidebar">
<!-- Sidebar user panel -->
<div class="user-panel">
<div class="pull-left image">
<img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">
</div>
<div class="pull-left info">
<p>Anastasia</p>
</div>
</div>
<!-- search form -->
<form action="#" method="get" class="sidebar-form">
<div class="input-group">
<input type="text" name="q" class="form-control" placeholder="Search...">
<span class="input-group-btn">
<button type="submit" name="search" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i>
</button>
</span>
</div>
</form>
<!-- /.search form -->
<!-- sidebar menu: : style can be found in sidebar.less -->
<ul class="sidebar-menu" data-widget="tree">
<li class="header">MAIN NAVIGATION</li>
<li class="active treeview">
<li class=""><a href="{{ route('post.index') }}"><i class="fa fa-circle-o"></i> Posts</a></li>
<li class=""><a href="{{ route('category.index') }}"><i class="fa fa-circle-o"></i> Categories</a></li>
<li class=""><a href="{{ route('tag.index') }}"><i class="fa fa-circle-o"></i> Tags</a></li>
<li class=""><a href="#"><i class="fa fa-circle-o"></i> Users</a></li>
</li>
</ul>
</section>
<!-- /.sidebar -->
</aside>

Идем в контроллер \app\Http\Controllers\Admin\PostController.php
public function index()
{
return 'Yes';
}

Нажимаем на ссылку Post и переходим на страницу http://blog.my/admin/post

В папке \resources\views\admin\post создаем файл show.blade.php
@extends('admin.layouts.app')

@section('main-content')
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>
Blank page
<small>it all starts here</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i> Home</a></li>
<li><a href="#">Examples</a></li>
<li class="active">Blank page</li>
</ol>
</section>

<!-- Main content -->
<section class="content">

<!-- Default box -->
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Title</h3>

<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip"
title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
Start creating your amazing application!
</div>
<!-- /.box-body -->
<div class="box-footer">
Footer
</div>
<!-- /.box-footer-->
</div>
<!-- /.box -->

</section>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
@endsection

Перепишем контроллер \app\Http\Controllers\Admin\PostController.php
public function index()
{
return view('admin.post.show');
}

Скопируем файл файл show.blade.php в папку шаблоном category и tag.

Идем в контроллер \app\Http\Controllers\Admin\CategoryController.php
public function index()
{
return view('admin.category.show');
}

Идем в контроллер \app\Http\Controllers\Admin\TagController.php
public function index()
{
return view('admin.tag.show');
}

Создадим контроллер пользователя.
php artisan make:controller Admin/UserController --resource

Создадим маршрут в web.php.
Route::resource('admin/user', 'UserController');

Идем в контроллер \app\Http\Controllers\Admin\UserController.php
public function index()
{
return view('admin.user.show');
}

public function create()
{
return view('admin.user.create');
}

Идем в папку \resources\views\admin
Копируем папку post и переименовываем ее в user.
Переименовываем файл в create.blade.php

Открываем sidebar.blade.php и переделываем ссылку.
<li class=""><a href="{{ route('user.index') }}"><i class="fa fa-circle-o"></i> Users</a></li>


Создание пользователя доступно по ссылке: http://blog.my/admin/user/create

Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html