我是Yii2的新手,我试图进行销售交易,但我的详细信息部分有下拉列表问题。
对于这个模块,我有3个表:
1.表头,表销售员
2.详细信息,表销售详情
3.对于项目,表项目
这是我的代码:
控制器上的:
public function actionUpdate($id)
{
$model = $this->findModel($id); //find appropriate record in salesheader
//$modeldetail = salesdetail::findModel($id);
$modeldetail = new salesdetail();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['index']);
} else {
$item = item::find()->select(["concat('[',code,'] - ', name) as item", "id"])->indexBy('id')->column();
$detail = salesdetail::find()->select(["*"])->all(); //find appropriate record in salesdetail
return $this->render('update', [
'model' => $model,
'modeldetail' => $modeldetail,
'item' => $item,
'detail' => $detail
]);
}
}
on salesheader model
namespace app\models;
use Yii;
class salesheader extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'salesheader';
}
public function rules()
{
return [
[['partnerId', 'date', 'term', 'name'], 'required'],
[['name', 'invNumber'], 'string'],
[['partnerId', 'term'], 'integer']
];
}
public function attributeLabels()
{
return [
'partnerId' => 'Customer',
'date' => 'Date',
'invNumber' => 'Inv. Number',
'term' => 'Term',
'name' => 'Name'
];
}
在salesdetail模型
上namespace app\models;
use Yii;
class salesdetail extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'salesdetail';
}
public function rules()
{
return [
[['itemId', 'qty', 'price'], 'required'],
[['unit'], 'string']
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'itemId' => 'Item',
];
}
}
在我看来
<?= $form->field($detail, 'itemId')->dropDownList($item)->label(false) ?>
当在浏览器中打开页面时,我收到此错误“在非对象上调用成员函数isAttributeRequired()”
如果我在控制器上更改此行
//$modeldetail = salesdetail::findModel($id);
$modeldetail = new salesdetail();
到这个
$modeldetail = salesdetail::findModel($id);
//$modeldetail = new salesdetail();
然后错误将是“调用未定义的方法app \ models \ salesdetail :: findModel()”
有人可以告诉我,我做错了什么吗? 以及如何根据salesheader从salesdetail获取适当的数据并将其放在下拉列表中?
感谢您的帮助