如何在PHP数组中调用变量($ name)?

时间:2012-10-09 20:53:57

标签: php yii

我正在努力提高我的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,值总是“”

更新:php for if($ _Get ['emx'] ...在一个文件(包装器)中,'email'=&gt;数组(...在一个单独的文件中 - 如果这很重要

我是否有错误的数组语法?我以为我只需要输入$ emx来设置值。谢谢你的阅读!

4 个答案:

答案 0 :(得分:1)

MDealSubscribeForm是您用来构建表单的模型(我在回答中将其称为$model

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

删除'value' => $emx,不再需要了。

-

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

答案 1 :(得分:0)

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

下次只需要print_r($_GET);调试表单

答案 2 :(得分: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的代码?您能告诉我们或向我们展示执行此操作的代码吗?

答案 3 :(得分:0)

你得到了很多错误的答案,因为你认为这是一个PHP问题并且标题是你的问题。从您所说的所有内容来看,$emx看起来设置得恰到好处,麻烦的是您无法以Yii生成的形式显示它。

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

$model->email = $emx;

您还可以避免使用else语句by setting the default value in your model or the form