ParseError syntax error, unexpected ';', expecting ']'

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

Код: Выделить всё

<?php

use common\models\HistoryBalance;
use yii\grid\GridView;
use yii\helpers\Html;

/* @var $this yii\web\View */
/* @var $searchModel backend\models\HistoryBalanceSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */

?>
<div class="history-balance-index">

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            ['attribute' => 'user_id',
                'value' => function ($model) {
                    return $model->user->username;
                }
            ],
            [
                'attribute' => 'balance',
                'format' => 'raw',
                'value' => function ($model) {
                    return $model->balance . '<br>
                        <span class="text-success">' . $model->credit . '</span>';
                }
            ],
            [
                'attribute' => 'balance_up',
                'format' => 'raw',
                'value' => function ($model) {
                    return Html::tag('span', $model->balance_up . '<br>' . $model->credit_up . (($model->credit_up >= 0)), [
                        'class' => ($model->credit_up >= 0) ? 'text-success' : 'text-danger'
                    ]);
                }
            ],
            [
                'attribute' => 'type',
                'filter' => Html::activeDropDownList(
                    $searchModel,
                    'type',
                    HistoryBalance::getSortLabels(),
                    [
                        'everyday' => 'каждый день',
                        'class' =>
                            'form-control form-control-sm'
                    ]
                ),
            ],
            'comment',
        ],
    ]); ?>
</div>
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

new.php
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

Код: Выделить всё

<?php

use common\models\HistoryBalance;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\widgets\ListView;

/* @var $this yii\web\View */
/* @var $searchModel backend\models\HistoryBalanceSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = Yii::t('app', 'History Balances');
$this->params['breadcrumbs'][] = $this->title;
?>
<?= $this->render('new') ?>
index.php
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение unknownby »

Нужно читать, учиться, пробовать и если действительно после трёхдневных попыток ничего не выходит уже писать сюда. А не просто прикреплять весь листинг файлов и хотеть, чтобы за тебя что-то сделали.
Взять переместить всё в другой файл и его отрендерить это делают обычные новички за 1-2 часа учебы. И делают это потом закрытыми глазами.
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

ясно
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

можете навести хоть на путь
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение unknownby »

Представь вот что.
У тебя есть вверху все что ты подключаешь для апельсинов и мандаринов, в файле размещён функционал по отображению апельсинов и мандаринов :D
Тебе хочется вынести мандарины в отдельный файл.
Ты такой опачки и создал новый файл в котором разместил все что вверху нужно было для мандаринов и сам функционал для отображения мандаринов. Но вот не задача, нужно же передать информацию из файла, где было раньше отображение мандаринов, а теперь подключение файла с инфой о мандаринах. А значит нужно передать параметры в этот файл.
Следи за логикой :D

Код: Выделить всё

$this->render('mandarin', [
'dataProvider' => $dataProvider,
'searchModel' => $searchModel,
]);
В этом случае $dataProvider и $searchModel это переменные которые пришли от контроллера и пошли дальше в твой присоединяемый файл. Ему же нужна информация о мандаринах, которая была доступна сразу в представлении, а теперь инфа скрыта в новом файле, т.к. ты ничего не рассказал о мандаринах в новом представлении.
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

Call to a member function formName() on null

index.php

Код: Выделить всё

<?php

use common\models\HistoryBalance;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\widgets\ListView;

/* @var $this yii\web\View */
/* @var $searchModel backend\models\HistoryBalanceSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = Yii::t('app', 'History Balances');
$this->params['breadcrumbs'][] = $this->title;
?>
<?= $this->render('new'), [
    'dataProvider' => $dataProvider,
    'searchModel' => $searchModel,
]; ?>
new.php

Код: Выделить всё

<?php

use common\models\HistoryBalance;
use yii\grid\GridView;
use yii\helpers\Html;

/* @var $this yii\web\View */
/* @var $searchModel backend\models\HistoryBalanceSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */

?>
<div class="history-balance-index">

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            ['attribute' => 'user_id',
                'value' => function ($model) {
                    return $model->user->username;
                }
            ],
            [
                'attribute' => 'balance',
                'format' => 'raw',
                'value' => function ($model) {
                    return $model->balance . '<br>
                        <span class="text-success">' . $model->credit . '</span>';
                }
            ],
            [
                'attribute' => 'balance_up',
                'format' => 'raw',
                'value' => function ($model) {
                    return Html::tag('span', $model->balance_up . '<br>' . $model->credit_up . (($model->credit_up >= 0)), [
                        'class' => ($model->credit_up >= 0) ? 'text-success' : 'text-danger'
                    ]);
                }
            ],
            [
                'attribute' => 'type',
                'filter' => Html::activeDropDownList(
                    $searchModel,
                    'type',
                    HistoryBalance::getSortLabels(),
                    [
                        'everyday' => 'каждый день',
                        'class' =>
                            'form-control form-control-sm'
                    ]
                ),
            ],
            'comment',
        ],
    ]); ?>
</div>
HistoryBalanceController.php

Код: Выделить всё

<?php

namespace backend\controllers;

use Yii;
use common\models\HistoryBalance;
use backend\models\HistoryBalanceSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;

/**
 * HistoryBalanceController implements the CRUD actions for HistoryBalance model.
 */
class HistoryBalanceController extends Controller
{

    /**
     * {@inheritdoc}
     */
    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['POST'],
                ],
            ],
        ];
    }
    /**
     * Lists all HistoryBalance models.
     * @return mixed
     */
    public function actionIndex()
    {
        $searchModel = new HistoryBalanceSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

    public function actionNew()
    {
        $searchModel = new HistoryBalanceSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('new', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }
}
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

подскажите пожалуйста
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

in /web/yii2/vendor/yiisoft/yii2/helpers/BaseHtml.php at line 2276
2267226822692270227122722273227422752276227722782279228022812282228322842285

* See [[getAttributeName()]] for explanation of attribute expression.
*
* @param Model $model the model object
* @param string $attribute the attribute name or expression
* @return string the generated input name
* @throws InvalidArgumentException if the attribute name contains non-word characters.
*/
public static function getInputName($model, $attribute)
{
$formName = $model->formName();
if (!preg_match(static::$attributeRegex, $attribute, $matches)) {
throw new InvalidArgumentException('Attribute name must contain word characters only.');
}
$prefix = $matches[1];
$attribute = $matches[2];
$suffix = $matches[3];
if ($formName === '' && $prefix === '') {
return $attribute . $suffix;
} elseif ($formName !== '') {

2. in /web/yii2/vendor/yiisoft/yii2/helpers/BaseHtml.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение unknownby »

Если ты выделил функционал в отдельный файл, то не нужно делать экшн для него.
Смотри как у тебя работает.
Ты нажал на какое-то действие (в твоем случае index). Контроллер обрабатывает твой actionIndex и рендерит, то представление, которое там указано (в твоем случае index). Внутри представления index у тебя есть render, который хочет отрисовать файл new, ты передаешь нужные параметры в этот файл и он отрабатывает как тебе нужно.
По итогу должно быть равнозначным вот что:
Цельный файл index со всем функционалом должен равняться укороченному файлу index и отображением в нем файла new.

А ошибка formName() это что-то не понятное в твоем случае, с выносом функционала. Не вижу нигде использования $model->formName()
Это когда у тебя форма используется и ты используешь кнопку, например, "Сохранить".
Вот у меня используется для кнопки $model->formName().

Код: Выделить всё

<?= Html::submitButton(
            '<span class="glyphicon glyphicon-ok"></span> '
            . '<span class="hidden-md hidden-sm hidden-xs">&nbsp;&nbsp;' . Yii::t('main', 'button.save') . '</span>',
            [
                'id' => 'save-' . $model->formName(),
                'class' => 'btn btn-primary',
                'title' => Yii::t('main', 'button.save'),
            ]);
        ?>
Сделай то, что ты хотел с выносом функционала, а если появляются новые ошибки, создай новую тему с новой ошибкой.
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

Я Вас не очень понимаю . Всмысле с новыми ошибками создать?
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

Я сделал экшен чтоб проверить. Один экшен потом удалю.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение unknownby »

В этой теме нужно было отобразить последние 30 записей для person в файле view.
Откуда теперь здесь появился другой контроллер и другой экшн?
Не вижу смысла выносить информацию из index в файл new, т.к. предположительно такого же GridView с таким же набором полей у тебя нигде не будет, а если и будет, то в index у тебя должны быть кнопки "просмотреть", "редактировать", "удалить". А в других местах такие кнопки не подойдут, будет просто отображение информации.

Как лучше всего делать вынос одинакового кода? Вначале написать его во многих местах и чтобы РАБОТАЛО :D , а дальше если код реально одинаковый и никаких различий нет (если незначительные, то можно что-то придумать), тогда уже делать вынос в отдельное представление и рендерить его.
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

он у меня есть уже в другом месте и работал
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

У меня не получается использовать код в разных местах, чтоб гридвью вынести
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

unknownby писал(а): 2019.12.29, 15:26 В этой теме нужно было отобразить последние 30 записей для person в файле view.
Откуда теперь здесь появился другой контроллер и другой экшн?
Не вижу смысла выносить информацию из index в файл new, т.к. предположительно такого же GridView с таким же набором полей у тебя нигде не будет, а если и будет, то в index у тебя должны быть кнопки "просмотреть", "редактировать", "удалить". А в других местах такие кнопки не подойдут, будет просто отображение информации.

Как лучше всего делать вынос одинакового кода? Вначале написать его во многих местах и чтобы РАБОТАЛО :D , а дальше если код реально одинаковый и никаких различий нет (если незначительные, то можно что-то придумать), тогда уже делать вынос в отдельное представление и рендерить его.
код работает я проверял.э
Вынести не получается
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение unknownby »

Одинаково работает в двух местах??? Размести код в двух местах и покажи мне эти два представления, где у тебя одинаково работает. Плюс контроллеры для каждого действия. Два разных представления, где у тебя будет один и тот же присоединенный файл new
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

все заработало
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: ParseError syntax error, unexpected ';', expecting ']'

Сообщение cqfmkapb »

только получилось вызвать с папки
Ответить