gpt4 book ai didi

php - Call to a member function of a non-object,yii和php web开发书代码错误

转载 作者:搜寻专家 更新时间:2023-10-31 20:43:11 26 4
gpt4 key购买 nike

我正在寻找解决方案,以解决我在遵循“使用 Yii 和 PHP 第 2 版进行 Web 应用程序开发”书籍示例时遇到的问题。我得到的错误(来自标题)不应该根据书中的所有内容来判断。好吧,这就是我想要做的。在 Project.php 模型中,我定义了一个方法,该方法应该使用 Yii 的 CHtml 助手来创建一个“可接受的”数组,以与 Yii 的 CActiveForm 的 dropDownList() 方法(在 View 文件中使用)一起使用。看起来像这样

public function getUserOptions() {
// $this->users refers to the defined relationship of this class
$usersArray = CHtml::listData($this->users, 'id', 'username');
return $usersArray;
}

关系定义在同一个类的relations()方法中

public function relations() {
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'issues' => array(self::HAS_MANY, 'Issue', 'project_id'),
'users' => array(self::MANY_MANY, 'User', 'tbl_project_
user_assignment(project_id, user_id)'),
);
}

以及我想如何使用 getUserOptions() 为用户提供下拉列表,以使用 Yiis dropDownList() 方法生成键 => 值对中的选项,如下所示。 _form.php 是 IssueControler.php Controller 的 View 文件,应该生成下拉列表的代码部分的代码是这样的:

<div class="row">
<?php echo $form->labelEx($model,'owner_id'); ?>
<?php echo $form->dropDownList($model,'owner_id', $model->project- >getUserOptions()); ?>
<?php echo $form->error($model,'owner_id'); ?>
</div>

<div class="row">
<?php echo $form->labelEx($model,'requester_id'); ?>
<?php echo $form->dropDownList($model,'requester_id', $model->project->getUserOptions()); ?>
<?php echo $form->error($model,'requester_id'); ?>
</div>

就像我说的,_form.php 一直渲染直到它点击两个下拉列表中的第一个,然后得到这个错误:

fatal error :在第 44 行 E:\Programi\XAMP\htdocs\trackbar\protected\views\issue_form.php 中的非对象上调用成员函数 getUserOptions()

任何帮助将不胜感激:)顺便说一句,在书中它表明一切都应该有效......

编辑:这里是IssueController.php的actionCreate()方法调用这个_form.php View 渲染,供引用。

public function actionCreate() {
$model=new Issue;

// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);

if(isset($_POST['Issue'])) {
$model->attributes=$_POST['Issue'];
$model->project_id = $this->_project->id;
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}

$this->render('create',array(
'model'=>$model,
));
}

最佳答案

您需要先获取当前项目实例。在该项目实例的基础上,您可以获得该特定项目的用户列表。添加这个

public function getProject()
{
return $this->_project;
}

并将其用作。

<div class="row">
<?php echo $form->labelEx($model,'owner_id'); ?>
<?php echo $form->dropDownList($model,'owner_id', $model->getProject()- >getUserOptions()); ?>
<?php echo $form->error($model,'owner_id'); ?>
</div>

<div class="row">
<?php echo $form->labelEx($model,'requester_id'); ?>
<?php echo $form->dropDownList($model,'requester_id', $model->getProject()->getUserOptions()); ?>
<?php echo $form->error($model,'requester_id'); ?>
</div>

希望这能奏效

关于php - Call to a member function of a non-object,yii和php web开发书代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17696794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com