YII2在非对象

时间:2017-11-21 14:44:28

标签: yii2

我是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获取适当的数据并将其放在下拉列表中?

感谢您的帮助

0 个答案:

没有答案