Страница 1 из 8
ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 12:59
cqfmkapb
Код: Выделить всё
<?= \yii\widgets\ListView::widget([
$dataProvider = new ActiveDataProvider([
'query' => \common\models\HistoryBalance::find()->orderBy(30),
'pagination' => [
'pageSize' => 30,
],
]);
try{echo GridView::widget([
'dataProvider' => $dataProvider,}catch(Exception $e){}
}]) ?>
как на странице персоны надо отобразить 30 последних записей истории баланса для этой персоны?
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 13:04
unknownby
Держи
ListView
И у тебя ошибка в try-catch. Посмотри все скобки и ;
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 14:59
cqfmkapb
Код: Выделить всё
<?= ListView::widget([
$dataProvider = new ActiveDataProvider([
'query' => HistoryBalance::find()->orderBy(30),
'pagination' => [
'pageSize' => 30,
],
]);
try{echo GridView::widget([
'dataProvider' => $dataProvider,}catch(Exception $e){};
}]) ?>
ParseError
syntax error, unexpected ';', expecting ']'
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 15:45
unknownby
; после фигурных, не?
Конструкция try-catch
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 15:47
cqfmkapb
Код: Выделить всё
'dataProvider' => $dataProvider,}catch(Exception $e){};
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 15:49
cqfmkapb
Код: Выделить всё
<?php
use common\models\HistoryBalance;
use yii\data\ActiveDataProvider;
use yii\grid\GridView;
use yii\helpers\Html;
use yii\widgets\DetailView;
use yii\widgets\ListView;
/* @var $this yii\web\View */
/* @var $model common\models\user\Person */
$this->title = $model->id;
$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'People'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
\yii\web\YiiAsset::register($this);
?>
<div class="person-view">
<h1><?= Html::encode($this->title) ?></h1>
<!-- <p>-->
<!-- --><?//= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>
<!-- --><?//= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->id], [
// 'class' => 'btn btn-danger',
// 'data' => [
// 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'),
// 'method' => 'post',
// ],
// ]) ?>
<!-- </p>-->
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'id',
'user_id',
'balance',
'balance_in',
'balance_out',
'credit',
'refovod',
'rating',
'referrer:ntext',
'bonus_count',
'autoriz',
],
]) ?>
<?= ListView::widget([
$dataProvider = new ActiveDataProvider([
'query' => HistoryBalance::find()->orderBy(30),
'pagination' => [
'pageSize' => 30,
],
]);
try{echo GridView::widget([
'dataProvider' => $dataProvider,}catch(Exception $e){};
}]) ?>
</div>
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 16:04
unknownby
cqfmkapb писал(а): ↑2019.12.20, 15:49
Код: Выделить всё
<?php
<?= ListView::widget([
$dataProvider = new ActiveDataProvider([
'query' => HistoryBalance::find()->orderBy(30),
'pagination' => [
'pageSize' => 30,
],
]);
try{echo GridView::widget([
'dataProvider' => $dataProvider,}catch(Exception $e){};
}]) ?>
</div>
Эта конструкция меня пугает почему-то. Может стоит вместо твоего использовать вот так?
Код: Выделить всё
<?= ListView::widget([
'dataProvider' => $dataProvider,
'pager' => [
'hideOnSinglePage' => true,
'firstPageLabel' => Yii::t('main', 'First'),
'lastPageLabel' => Yii::t('main', 'Last'),
],
'itemView' => '_product_item', //файл с нужным представлением информации
'layout' => '<div class="box box-solid"><div class="box-header"><div class="pull-right">{summary}</div></div></div><div class="row">{items}</div>{pager}',
])?>
В файле _product_item (создай свой любой) блочная структура
Блок
Код: Выделить всё
<div class="col-md-6 col-sm-12 col-xs-12">
СВОЯ СТРУКТУРА ПРЕДСТАВЛЕНИЯ
</div>
Внутри него что хочешь вноси уже
Используешь box или panel bootstrap уже сам пропишешь нужные стили
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 16:12
cqfmkapb
на странице персоны надо отобразить 30 последних записей истории баланса для этой персоны
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 16:38
unknownby
cqfmkapb писал(а): ↑2019.12.20, 16:12
на странице персоны надо отобразить 30 последних записей истории баланса для этой персоны
Внутри контроллера у тебя примерно так
Код: Выделить всё
public function actionView($id)
{
$model = $this->findModel($id)// поиск твоей модели
$searchModel = new PersonSearch;
$dataProvider = $searchModel->search($id);
return $this->render('view', [
'model' => $model,
'dataProvider' => $dataProvider,
'searchModel' => $searchModel,
]);
}
Внутри $dataProvider передается запрос, там и лимитировать последние 30 штук, чтобы не выдавал все записи. Это уже в PersonSearch.
Поиск записей идет в модели, передается контроллеру и дальше через него передается представлению. Представление просто использует то, что ему передали.
А внутри модели поиск сделай
Код: Выделить всё
$query->orderBy('поле для сортировки'=> SORT_DESC);
$query->limit(30);
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 16:49
cqfmkapb
у меня так
Код: Выделить всё
public function actionView($id)
{
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 17:19
cqfmkapb
Код: Выделить всё
$query->orderBy('id'=> SORT_DESC);
$query->limit(30);
где это в модели должно быть?
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 22:46
cqfmkapb
Код: Выделить всё
<?php
use common\models\HistoryBalance;
use yii\data\ActiveDataProvider;
use yii\grid\GridView;
use yii\helpers\Html;
use yii\widgets\DetailView;
use yii\widgets\ListView;
/* @var $this yii\web\View */
/* @var $model common\models\user\Person */
$this->title = $model->id;
$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'People'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
\yii\web\YiiAsset::register($this);
?>
<div class="person-view">
<h1><?= Html::encode($this->title) ?></h1>
<!-- <p>-->
<!-- --><?//= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>
<!-- --><?//= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->id], [
// 'class' => 'btn btn-danger',
// 'data' => [
// 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'),
// 'method' => 'post',
// ],
// ]) ?>
<!-- </p>-->
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'id',
'user_id',
'balance',
'balance_in',
'balance_out',
'credit',
'refovod',
'rating',
'referrer:ntext',
'bonus_count',
'autoriz',
],
]) ?>
<?= ListView::widget([
$dataProvider = new ActiveDataProvider([
'query' => HistoryBalance::find()->orderBy(30),
'pagination' => [
'pageSize' => 30,
],
]);
try{echo GridView::widget([
'dataProvider' => $dataProvider,}catch(Exception $e){};
}]) ?>
</div>
так ошибка
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.20, 22:53
yiiliveext
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.21, 12:26
unknownby
cqfmkapb писал(а): ↑2019.12.20, 16:49
у меня так
Код: Выделить всё
public function actionView($id)
{
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
А должно быть так, как я написал пример контроллера.
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.21, 12:28
unknownby
cqfmkapb писал(а): ↑2019.12.20, 17:19
Код: Выделить всё
$query->orderBy('id'=> SORT_DESC);
$query->limit(30);
где это в модели должно быть?
Это должно быть в PersonSearch.
Чтобы у тебя внутри view не осуществлялся поиск данных, только представление их.
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.21, 13:52
cqfmkapb
PersonSearch
Код: Выделить всё
<?php
namespace backend\models;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use common\models\user\Person;
/**
* PersonSearch represents the model behind the search form of `common\models\user\Person`.
*/
class PersonSearch extends Person
{
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[[ 'id', 'user_id', 'refovod', 'bonus_count', 'autoriz'], 'integer'],
[['balance', 'balance_in', 'balance_out', 'credit', 'rating'], 'number'],
[['referrer'], 'safe'],
];
}
/**
* {@inheritdoc}
*/
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$query = Person::find();
$query = $query->orderBy('id'=> SORT_DESC);
$query = $query->limit(30);
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
'user_id' => $this->user_id,
'balance' => $this->balance,
'balance_in' => $this->balance_in,
'balance_out' => $this->balance_out,
'credit' => $this->credit,
'refovod' => $this->refovod,
'rating' => $this->rating,
'bonus_count' => $this->bonus_count,
'autoriz' => $this->autoriz,
]);
$query->andFilterWhere(['ilike', 'referrer', $this->referrer]);
return $dataProvider;
}
}
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.22, 10:33
cqfmkapb
PersonController
Код: Выделить всё
<?php
namespace backend\controllers;
use common\models\HistoryBalance;
use Yii;
use common\models\user\Person;
use backend\models\PersonSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
/**
* PersonController implements the CRUD actions for Person model.
*/
class PersonController extends Controller
{
/**
* {@inheritdoc}
*/
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::class,
'actions' => [
'delete' => ['POST'],
],
],
];
}
/**
* Lists all Person models.
* @return mixed
*/
public function actionIndex()
{
$searchModel = new PersonSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
public function actionView($id)
{
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
// public function actionView($id)
// {
// $model = $this->findModel($id)// поиск твоей модели
// $searchModel = new HistoryBalance();
// $dataProvider = $searchModel->search($id);
//
// return $this->render('view', [
//
// 'model' => $model,
// 'dataProvider' => $dataProvider,
// 'searchModel' => $searchModel,
// ]);
// }
protected function findModel($id)
{
if (($model = PersonSearch::findOne($id)) !== null) {
return $model;
}
throw new NotFoundHttpException(Yii::t('app', 'The requested page does not exist.'));
}
}
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.22, 16:40
unknownby
Давай я тебе объясню логику работы того, что тебе хочется. А ты сделаешь это с теми подсказками которые я писал ранее.
У тебя в просмотре информации о человеке, должна подключаться история баланса из 30ти последних записей. А значит в ListView у тебя должен приходить $dataProvider с инфой о балансах, инфа приходит через контроллер, а контроллер в свою очередь получает информацию из модели поиска. Выборка последних 30ти записей осуществляется в HistoryBalance. Внутри модели должен быть search($id), который принимает значение идентификатора человека. Фильтры в поиске лишние, т.к. ты не делаешь GridView, а просто вывод информации через ListView. В общем смотря как расширить функционал, тогда может и понадобятся фильтры, но и запрос в контроллере изменится.
Примерно такой запрос
Код: Выделить всё
$query = HistoryBalance::find()
->where('person_id' => $id)
->orderBy('id'=> SORT_DESC)
->limit(30);
Можно просто сделать выборку запросом и во view сделать foreach() для простого вывода информации. А не заморачиваться с ListView
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.22, 17:04
cqfmkapb
Код: Выделить всё
<?= ListView::widget([
$dataProvider = new ActiveDataProvider([
'query' => HistoryBalance::find()->orderBy(30),
'pagination' => [
'pageSize' => 30,
],
]);
try{echo GridView::widget([
'dataProvider' => $dataProvider,}catch(Exception $e){};
}]) ?>
Re: ParseError syntax error, unexpected ';', expecting ']'
Добавлено: 2019.12.22, 17:05
cqfmkapb
Код: Выделить всё
<?= ListView::widget([
$dataProvider = new ActiveDataProvider([
$query = HistoryBalance::find()
->where('user_id' => $id)
->orderBy('id'=> SORT_DESC)
->limit(30);
]);
try{echo GridView::widget([
'dataProvider' => $dataProvider,}catch(Exception $e){};
}]) ?>