我知道有一些与此相关的答案,但我找不到任何有用的答案。
我收到此错误:Getting unknown property: app\models\Employees::holidays
并且我不知道我做错了什么。
有人可以帮我解决这个问题吗?
这是我的型号代码:
<?php
namespace app\models;
use Yii;
use yii\data\ActiveDataProvider;
use yii\db\ActiveRecord;
/**
* This is the model class for table "employee".
*
* @property integer $id
* @property string $name
* @property string $surname
* @property string $employment_date
*/
class Employee extends ActiveRecord
{
/** @const SCENARIO_CREATE scenario - create */
const SCENARIO_CREATE = 'create';
/** @const SCENARIO_EDIT scenario - edit */
const SCENARIO_EDIT = 'edit';
/** @const SCENARIO_SEARCH scenario - search */
const SCENARIO_SEARCH = 'search';
/** @const HOLIDAYS_PER_WORK_DAY Earned holidays per one working day. */
const HOLIDAYS_PER_WORK_DAY = 0.4;
/** @var integer $holidays calculated holidays field used in list. */
public $holidays;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'employee';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
// id
['id', 'required', 'except' => self::SCENARIO_SEARCH],
['id', 'integer'],
// name
['name', 'required'],
['name', 'string', 'max' => 255],
// surname
['surname', 'required'],
['surname', 'string', 'max' => 255],
// employment date
['employment_date', 'required'],
['employment_date', 'match',
'pattern' => '/^([1][9]|[2][0])[0-9]{2}[-](0[1-9]|1[0-2])[-](0[1-9]|[1-2][0-9]|3[0-1])$/',
'message' => Yii::t('app',
'Neteisingas datos formatas (Formatas: YYYY-MM-DD)'),
],
['employment_date', 'date',
'format' => 'php:Y-m-d',
'max' => time(),
'tooBig' => Yii::t('app', 'Blogai įvesta data. Vėliausia galima data: ' . date('Y-m-d'))
],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => Yii::t('app', 'ID'),
'name' => Yii::t('app', 'Darbuotojo vardas'),
'surname' => Yii::t('app', 'Darbuotojo pavardė'),
'employment_date' => Yii::t('app', 'Įdarbinimo data'),
];
}
/**
* @inheritdoc
*/
public function scenarios()
{
return [
self::SCENARIO_CREATE => [
'name',
'surname',
'employment_date',
],
self::SCENARIO_EDIT => [
'id',
'name',
'surname',
'employment_date',
],
self::SCENARIO_SEARCH => [
'id',
'name',
'surname',
'employment_date',
'holidays',
],
];
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$holidays = 'floor(datediff(curdate(), employment_date) * ' .
Employee::HOLIDAYS_PER_WORK_DAY . ')';
$query = Employees::find()->select([
$this->tableName() . '.id',
$this->tableName() . '.name',
$this->tableName() . '.surname',
$this->tableName() . '.employment_date',
$holidays . ' as holidays',
]);
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => [
'defaultOrder' => ['name' => SORT_ASC],
],
]);
$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,
'employment_date' => $this->employment_date,
]);
$query->andFilterWhere(['like', 'name', $this->name])
->andFilterWhere(['like', 'surname', $this->surname]);
return $dataProvider;
}
}
我的index.php文件:
<?php
use app\models\EmployeeSearch;
use yii\data\ActiveDataProvider;
use yii\grid\GridView;
use yii\helpers\Html;
use yii\web\View;
use yii\widgets\Pjax;
/* @var $this View */
/* @var $searchModel EmployeeSearch */
/* @var $dataProvider ActiveDataProvider */
$this->title = Yii::t('app', 'Employees');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="employee-index">
<h1><?= Html::encode($this->title) ?></h1>
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
<p>
<?= Html::a(Yii::t('app', 'Create Employee'), ['create'], ['class' => 'btn btn-success']) ?>
</p>
<?php Pjax::begin(); ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'name',
'surname',
'employment_date',
'holidays',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
<?php Pjax::end(); ?></div>
我知道它很长,但我不知道应该包含多少代码。
我认为holidays
文件中的这一行index php
导致错误。
答案 0 :(得分:1)
在您的规则上添加此内容。
['holidays', 'integer']
在搜索过程中使用此$this->holidays
。
答案 1 :(得分:0)
您必须对所有index.php
文件发表评论并运行您的代码。如果您没有任何错误,则表示错误在index.php
页面中。
然后你必须逐个取消注释行,并在每次取消注释后运行你的项目。当你有错误时,它意味着该行是你的错误之一。然后kepp评论该行并逐个取消注释,并将该任务重复到文件结尾。
通过这种方式,您可以找到错误。
答案 2 :(得分:0)
您的代码有些奇怪:
我的假设是你有两种不同的模型: &#34;员工&#34;和&#34;员工&#34;在你的app / models目录中。
您正在使用&#34;员工&#34;在&#34;员工&#34;的搜索()中的模型。为此,您需要定义:
public $holidays;
在您的&#34;员工&#34;模型,如你的错误所示。
但我的猜测是你想使用可能&#34;员工&#34;搜索模型()。如果是这种情况,请更改&#34;员工&#34;到&#34;员工&#34;在那个职能中:
$query = Employee::find()...
答案 3 :(得分:-1)
在课程开始之前,在模型中添加假期的属性:
<script type="text/javascript">
function printPage() {
window.print();
//document.execCommand('print', false, null);
////print each frames
//for (var k = 0; k < window.frames.length; k++) {
// window.frames[k].focus();
// window.frames[k].print();
//}
}
</script>
然后它将起作用。