Сразу прошу прощения, если глупый вопрос, но я так и не понял, есть ли такое в yii2, и если есть - то как им пользоваться. Что я имею ввиду: есть такой код:
foreach ($reviews as $rev){
?>
<li>
<div class="col-lg-7 col-md-7 col-sm-7 col-md-offset-3 col-lg-offset-3 col-sm-offset-3">
<div class="pm-testimonial-container">
<div class="pm-testimonial-quote-box">
<i class="fa fa-quote-left"></i>
</div>
<div class="pm-testimonial-text-box">
<p>тут текст</p>
<p class="pm-testimonial-name">Автор</p>
<p class="pm-testimonial-title">Город</p>
</div>
</div>
</div>
</li>
<?
}
Вот я хочу вынести этот html код в шаблон, вместо динамического текста прописать что то типа [city]
, [author]
и [text]
. И в цикле вызывать наподобие
echo $this->template('items', ['city'=>'City', 'author'=>'Kola', 'text'=>'Text']);
Буду благодарен за любую помощь
Фиг его знает, как с шаблонами. Никогда не ставил их. Также, наверно: добавить в composer.json
, обновить через composer update
через консоль, подключить в конфигурации config/web.php
шаблонизатор по гайду шаблонизатора, и в папке views/
создавать файлы. Только с расширением другим. Наверно, типа .tpl
или че там. Поставить подсветку синтаксиса этого шаблонизатора в свой блокнот. И фигачить [city]
, [author]
и [text]
.
Могу привести примеры, как фигачить без шаблонизатора и без стиля битрикса с вкраплениями php-тегов (<?php ?>
, <?= ?>
) внутрь html
. Тут хелпер yii\helpers\Html
типа юзается. Вообще, обычно все решают виджеты
GridView DetailView
Но я только с техническими сайтами работал, где такие виджеты только и нужны.
Монструозно
Файл views/site/index.php
<?php
use yii\helpers\Html;
foreach ($reviews as $review) {
echo Html::beginTag('li');
echo Html::beginTag('div', ['class' => 'col-lg-7 col-md-7 col-sm-7 col-md-offset-3 col-lg-offset-3 col-sm-offset-3']);
echo Html::beginTag('div', ['class' => 'pm-testimonial-container']);
echo Html::beginTag('div', ['class' => 'pm-testimonial-quote-box']);
echo Html::tag('i', '', ['class' => 'fa fa-quote-left']);
echo Html::endTag('div');
echo Html::beginTag('div', ['class' => 'pm-testimonial-text-box']);
echo Html::tag('p', $review->text);
echo Html::tag('p', $review->author, ['class' => 'pm-testimonial-name']);
echo Html::tag('p', $review->city, ['class' => 'pm-testimonial-title']);
echo Html::endTag('div');
echo Html::endTag('div');
echo Html::endTag('div');
echo Html::endTag('li');
}
?>
Файл controllers/SiteController.php
<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\Reviews;
class SiteController extends Controller
{
public function actionIndex($id)
{
$reviews = Reviews::find()
->alias('t')
->where(['t.testimonial_id' => $id])
->all();
return $this->render('index', ['reviews' => $reviews]);
}
}
?>
Со вторым шаблоном
Файл views/site/index.php
<?php
foreach ($reviews as $review) {
echo $this->render('_testimonial', ['review' => $review]);
}
?>
Файл views/site/_testimonial.php
<?php
use yii\helpers\Html;
echo Html::beginTag('li');
echo Html::beginTag('div', ['class' => 'col-lg-7 col-md-7 col-sm-7 col-md-offset-3 col-lg-offset-3 col-sm-offset-3']);
echo Html::beginTag('div', ['class' => 'pm-testimonial-container']);
echo Html::beginTag('div', ['class' => 'pm-testimonial-quote-box']);
echo Html::tag('i', '', ['class' => 'fa fa-quote-left']);
echo Html::endTag('div');
echo Html::beginTag('div', ['class' => 'pm-testimonial-text-box']);
echo Html::tag('p', $review->text);
echo Html::tag('p', $review->author, ['class' => 'pm-testimonial-name']);
echo Html::tag('p', $review->city, ['class' => 'pm-testimonial-title']);
echo Html::endTag('div');
echo Html::endTag('div');
echo Html::endTag('div');
echo Html::endTag('li');
?>
Файл controllers/SiteController.php
<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\Reviews;
class SiteController extends Controller
{
public function actionIndex($id)
{
$reviews = Reviews::find()
->alias('t')
->where(['t.testimonial_id' => $id])
->all();
return $this->render('index', ['reviews' => $reviews]);
}
}
?>
С виджетом
Файл views/site/index.php
<?= app\components\widgets\Testimonial(['reviews' => $reviews]) ?>
Файл components/widgets/Testimonial.php
<?php
namespace app\components\widgets;
use yii\helpers\Html;
class Testimonial extends yii\base\Widget
{
public $reviews;
public function init()
{
if (!isset($this->reviews)) {
throw new \yii\base\Exception("Property \$reviews must be set.");
}
}
public function run()
{
foreach($this->reviews as $review) {
echo Html::beginTag('li');
echo Html::beginTag('div', ['class' => 'col-lg-7 col-md-7 col-sm-7 col-md-offset-3 col-lg-offset-3 col-sm-offset-3']);
echo Html::beginTag('div', ['class' => 'pm-testimonial-container']);
echo Html::beginTag('div', ['class' => 'pm-testimonial-quote-box']);
echo Html::tag('i', '', ['class' => 'fa fa-quote-left']);
echo Html::endTag('div');
echo Html::beginTag('div', ['class' => 'pm-testimonial-text-box']);
echo Html::tag('p', $review->text);
echo Html::tag('p', $review->author, ['class' => 'pm-testimonial-name']);
echo Html::tag('p', $review->city, ['class' => 'pm-testimonial-title']);
echo Html::endTag('div');
echo Html::endTag('div');
echo Html::endTag('div');
echo Html::endTag('li');
}
}
}
Файл controllers/SiteController.php
<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\Reviews;
class SiteController extends Controller
{
public function actionIndex($id)
{
$reviews = Reviews::find()
->alias('t')
->where(['t.testimonial_id' => $id])
->all();
return $this->render('index', ['reviews' => $reviews]);
}
}
?>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем привет! У меня произошла проблема с выводом русских символов из базы данных (MyISAM) с помощью PHPСравнение таблицы - utf8_general_ci
Хеширую куки, но получается одинаковый хэш, хотя все строки разные
Есть у меня файл на php который отправляет данные, введённые в формах на сайте в текстовый файл