Открываем
IndexController.php и добавим туда
массив переменных:
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class IndexController extends Controller
{
public function show() {
$array = array(
'title'=>'Laravel Project',
'data' =>[
'one' => 'List 1',
'two' => 'List 2',
'three' => 'List 3',
'four' => 'List 4',
'five' => 'List 5'
],
'dataI' =>['List 1','List 2','List 3','List 4','List 5'],
'bvar' => true,
'script' =>"<script>alert('hello')</script>"
);
if(view()->exists('default.index')) {
return view('default.index', $array);
}
abort(404);
}
}
Открываем layout.blade.php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class IndexController extends Controller
{
public function show() {
$array = array(
'title'=>'Laravel Project',
'data' =>[
'one' => 'List 1',
'two' => 'List 2',
'three' => 'List 3',
'four' => 'List 4',
'five' => 'List 5'
],
'dataI' =>['List 1','List 2','List 3','List 4','List 5'],
'bvar' => true,
'script' =>"<script>alert('hello')</script>"
);
if(view()->exists('default.index')) {
return view('default.index', $array);
}
abort(404);
}
}
Открываем layout.blade.php
И
отображаем передаваемые переменные:
<h1>{{ $title }}</h1>
Мы
можем использовать стандартные функции
PHP.
<h1>{{
date('Y.m.d', time()) }}</h1>
<ul
class="nav navbar-nav">
<li class="active"><a href="{{
route('home') }}">Home</a></li>
<li><a href="{{ route('about') }}">About</a></li>
<li><a href="{{ route('articles')
}}">Articles</a></li>
<li><a href="{{ route('article',array('id'=>10))
}}">Article</a></li>
</ul>
Открываем
content.blade.php
Передаваемые
переменные будут доступны и в дочерних
шаблонах и в файлах подключаемых через
include
Все
передаваемые переменные обрабатываются
шаблонизатором blade
htmlentities в
html-сущности.
Чтобы отключить
данную возможность и передать, например,
скрипт нужно использовать:
{{!! $script !!}}
Чтобы
что-то не учитывать шаблонизатором
blade, нужно написать символ
собаки: @{{ var }}
Мы
можем использовать различные управляющие
конструкции PHP.
{{
isset($bvar) ? $bvar : $title}}
Аналог
данной записи: {{ $bvar or $title}}
Формирование
условных операторов:
@if(count($data)
> 3)
В
массиве больше 3 элементов
@endif
или
@if(count($data)
< 3)
В
массиве меньше 3 элементов
@else
В
массиве больше 3 элементов
@endif
или
@if(count($data)
< 3)
В
массиве меньше 3 элементов
@elseif(count($data)
> 10)
В
массиве больше 10 элементов
@else
В
массиве неизвестное кол-во элементов
@endif
Оператор
for
Пройдемся
по массиву и выведем его:
<ul>
@for($i
= 0; $i < count($dataI); $i++)
<li>{{ $dataI[$i] }}</li>
@endfor
</ul>
Оператор
foreach
<ul>
@foreach($data
as $k=>$value)
<li>{{ $k.'=>'.$value }}</li>
@endforeach
</ul>
Оператор
forelse – его работа аналогична
циклу foreach и
поддерживает дополнительную возможность.
Если
в массиве есть передаваемые ячейки, то
его работа аналогична оператору foreach.
Если
массив пуст, значит отработает содержимое
директории empty
Не
нужно прописывать проверку.
<ul>
@forelse($data
as $k=>$value)
<li>{{ $k.'=>'.$value }}</li>
@empty
<p>No items</p>
@endforelse
</ul>
Оператор
while
@while(FALSE)
I'm
looping forever.
@endwhile
Директива
each.
@each('default.list',
$dataI, 'value')
Создадим
вид: list.blade.php в папке default.
В
качестве первого параметра принимает
имя вида, а второго — массив с данными,
которые будут передаваться в вид, третий
— имя переменной для передачи данных.
Директива
обходит при помощи цикла содержимое
массива, который передается при помощи
второго параметра и на каждой итерации
цикла содержимое ячеек массива попадает
в переменную value.
В list.blade.php:
include
<li>{{
$value }}</li>
Выводит:
В
массиве неизвестное кол-во элементов
List 1
List 2
List 3
List 4
List 5
one=>List 1
two=>List 2
three=>List 3
four=>List 4
five=>List 5
one=>List 1
two=>List 2
three=>List 3
four=>List 4
five=>List 5
include
List
1
include
List
2
include
List
3
include
List
4
include
List
5
Создание
собственной директивы или инструкции
Создадим
собственную директиву. Откроем файл
App\Providers\AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Blade;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
Blade::directive('myDir', function($var) {
return "<h1>New Directive - $var</h1>";
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Blade;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
Blade::directive('myDir', function($var) {
return "<h1>New Directive - $var</h1>";
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
В шаблоне, где
необходимо использовать данную директиву
обращаемся к ней: @myDir('hello')
Комментариев нет:
Отправить комментарий