重複の可能性:
PHP: 「通知: 未定義の変数」および「通知: 未定義のインデックス」</a>
キャンペーンまたは単一のキャンペーンをレンダリングするビュー内に新しい寄付を作成するためのフォームを表示しようとしています...
ビューに渡されたキャンペーン データの表示は正常に機能しましたが、コードを renderPartial に追加すると、PHP 通知「未定義の変数: 寄付」が表示され続けます。
CampaignsController では、次のコードを使用しています。
public function actionDisplay($id)
{
$campaign=$this->loadModel($id);
$donations=$this->createDonations($campaign);
$params = array('User_ID'=>$campaign->campaign_user);
if(Yii::app()->user->checkAccess('displayCampaigns') || Yii::app()->user->checkAccess('displayOwnCampaigns',$params)){
$this->parts=array(
'banner'=>Images::model()->getImageUrl($campaign->campaign_banner),
'avatar'=>Images::model()->getImageUrl($campaign->campaign_avatar),
'copy'=>$campaign->campaign_copy,
'campaign_name'=>$campaign->campaign_name,
);
$parts = $this->parts;
$this->layout='//layouts/campaignlayout1';
$this->render('display',array(
'model'=>$campaign,
'parts'=>$parts,
'donations'=>$donations,
));
} else {
throw new CHttpException(403,"You can only display your own Campaign");
}
}
これは、CampaignsController にもある関数 createDonations() で、$donations=$this->createDonations($campaign) によって呼び出されます。
protected function createDonations($campaign) {
$newdonation = new Donations;
if(isset($_POST['Donations'])) {
$newdonation->attributes=$_POST['Donations'];
if($issue->addDonations($newdonation)) {
Yii::app()->user->setFlash('donationsSubmitted',"Your Donation has been added." );
$this->refresh();
}
}
return $newdonation;
}
レイアウト Campaignlayout1 では、最初に $campaign と $parts からデータをレンダリングします。それはうまくいったので、寄付から _form を表示するために renderPartial() を追加しました - これがそのコードです:
<?php $this->renderPartial('/donations/_form',array(
'model'=>$donations, )); ?>
PHP の通知が表示されます: 未定義の変数: 寄付
スタック トレースの一部を次に示します。
/protected/controllers/CampaignsController.php(232): CController->render("display", array("model" => キャンペーン, "parts" => array("banner" => " http://imsgonline.com /yiitest/images/genericbanner.jpg ", "アバター" => " http://imsgonline.com/yiitest/images/genericmale.jpg ", "コピー" => "
送金する
", "campaign_name" => "Joes Fundraising"), "donations" => Donations))私がここで間違っていることは何か分かりますか??