0

プラグイン要素にフォームがあり、チェックボックスの値を it_queries という名前のテーブルとフィールド status_type に挿入したいので、エラー Undefined variable: variableValue [APP\Plugin\Feedback\View\Elements\comment_add.ctp 、37行目] .私はこのようにコントローラで変数を宣言しました

$this->set('variableValueStatus', 'Pending');

そして、これは私にエラーを与えている37行目です

以下はコントローラーコードです

    App::uses('FeedbackAppController', 'Feedback.Controller');

class CommentsController extends FeedbackAppController
{
public $components = array('Feedback.Comments');

public function add($foreign_model = null, $foreign_id = null)
{
if (empty($foreign_model) ||
empty($foreign_id) ||
!$this->request->is('post')
)
{
foreach ($_POST['likebutton'] as $pageId => $likeFlag) {
$dbFlag = $likeFlag ? 'Yes' : 'No';
}
return $this->redirect('/');
}

App::uses($foreign_model, 'Model');
$Model = ClassRegistry::init($foreign_model);

if (!($Model instanceof Model))
{
return $this->redirect('/');
}

if ($Model->hasAny(array($Model->primaryKey => $foreign_id)) == false)
{
return $this->redirect('/');
}

if (!isset($this->request->data['Comment']['foreign_model']) ||
!isset($this->request->data['Comment']['foreign_id']) ||
$this->request->data['Comment']['foreign_model'] != $foreign_model ||
$this->request->data['Comment']['foreign_id'] != $foreign_id)
{
return $this->redirect('/');
}

$user_id = null;

if (isset($this->Auth))
{
$user_id = $this->Auth->user('id');
}

$this->request->data['Comment']['foreign_model'] = $Model->name;
$this->request->data['Comment']['foreign_id'] = $foreign_id;
$this->request->data['Comment']['user_id'] = $user_id;


$this->Comment->create();

if (!$this->Comment->save($this->request->data))
{
$this->set('validation_errors', $this->Comment->validationErrors);
return;
}

$this->redirect($this->request->referer().'#comment-'.$this->Comment->id);
}
}

そして、私の要素の追加ビューでは、変数値にアクセスしようとしている方法がここにあります

echo $this->Form->checkbox('ItQuery.status_type', array('type' => 'hidden', 'value'=>$variableValueStatus));

誰かがこれを修正する方法を教えてくれたら、それは素晴らしいことです

4

1 に答える 1

0

変数を !post に渡すだけで、外部モデルと外部 ID が設定されていない場合。ほとんどの場合、それはおそらくうまくいきません。変数を使用する前にビューでチェックしない場合は、常に変数を渡す必要があります。

しかし、とにかく、それはまだ間違っているでしょう。フォームを POST の古い値にフォールバックさせたくない場合は、「値」の代わりに「デフォルト」を使用する必要があります (そうすべきではありません)。

また、 $this->request->data を使用して、フォームにデフォルトを適切に入力することをお勧めします。

if (!$this->request->is('post')) {
    $this->request->data['ItQuery']['status_type'] = 'Pending';
}

フォームの操作を参照してください

于 2013-03-06T07:52:39.450 に答える