0

我正在努力提高我的 PHP 技能,但在涉及数组时不知所措。

这是交易:我正在尝试将表单元素的值设置为 $emx - 一个从 URL 字符串中捕获参数的变量,即 myform.html?emx=youremail@email.com

这是我拥有的数组,它构建了表单(这是 PHP Yii)

'email' => array('type'=>'text', 'label'=>$this->t('Your email address'), 'value' => $emx, 'onFocus' => 'this.value=""'),

它生成的 HTML:

<input type="text" id="MDealSubscribeForm_email" name="MDealSubscribeForm[email]" onfocus="this.value=&quot;&quot;" value="">

我已将 $emx 定义如下:

<?php
    if ($_GET['emx'] != ""){
    $emx = $_GET['emx'];}
    else {
    $emx = "Enter your email address";} ?>

我遇到的问题是该值未设置为 $emx - 无论我是否将 ?emx= 附加到 URL,值始终为“”

更新: if ($_Get['emx']... 的 php 在一个文件中(一个包装器),而 'email' => array(... 在一个单独的文件中 - 如果这很重要的话。

我的数组语法错误吗?我想我只需要输入 $emx 来设置值。谢谢阅读!

4

4 回答 4

1

MDealSubscribeForm 是您用来构建表单的模型(我$model在回答中这样称呼它)

if(isset($_GET['emx'])){
    $model->email = $_GET['emx'];
} else {
    $model->email = "Enter your email address";
}

remove 'value' => $emx,这不再需要了。

--

而且,尝试一下'onFocus' => 'js:this.value=""',我相信这会给出正确的 html 而不是&quot;&quot;

于 2012-10-10T06:07:31.623 回答
0

你得到了很多错误的答案,因为你认为这是一个 PHP 问题,并把你的问题命名为这样。从你所说的一切来看,它看起来$emx设置正确,问题是你不能让它在 Yii 生成的表单中显示。

请注意, CFormInputElement没有“值”属性。要设置该值,您需要在模型中设置它,例如:

$model->email = $emx;

您还可以通过在模型或表单中设置值来避免该else语句。default

于 2012-10-10T17:18:05.400 回答
0

您应该使用$_GET['MDealSubscribeForm']['email'](如果它是 GET)

下次只需做一个print_r($_GET);调试表单

于 2012-10-09T21:00:35.483 回答
0

如果未设置电子邮件,最好在电子邮件输入字段上使用占位符属性,而不是显式设置值。我总是讨厌看到内联 javascript。

尝试:

<?php $emx = (isset($_GET['emx'])) ? $_GET['emx'] : ''; ?>

接着:

'email' => array('type'=>'text', 'label'=>$this->t('Your email address'), 'value' => $emx, 'placeholder' => 'Enter your email address'),

回到主题,这看起来不像是为标准 Yii 表单输入生成器函数设计的数组。也许问题出在将这个数组转换为输入 HTML 的代码中?您能告诉我们或向我们展示执行此操作的代码吗?

于 2012-10-09T22:40:00.350 回答