输出值的PHP语法错误

时间:2016-12-07 02:53:00

标签: php syntax

如何撰写本文时强调:

isset($fields['firstName']) 
  ? ' value=" ' . e( $fields['firstName'] ) . '"' 
  : '' ?>

从此: (这是来自包含php的HTML文件)

<input type="text" class="form-control" placeholder="First Name" name="firstName" id="firstName" <?php echo isset($fields['firstName']) ? ' value="' . e($fields['firstName']) . '"' : '' ?>>

进入:(这是来自包含html的php文件)

$output .= '<input type="text" class="form-control" placeholder="Name" id="name" name="name">';

这里的目标是使用第二个语句获得相同的语法,因为我将在函数中返回$ output变量。因此我不能使用第一个语句并希望转换语法。提前感谢您的帮助

这是我需要第一个语句的函数的一部分(焦点在于名称输入值):

function get_special_promos_landing_html ($id, $item, $errors, $success, $fields) {
    $output = '';

    $output.= '<form name="couponForm" class="couponForm" method="post"  action="mail/coupon_form.php" novalidate>';
    $output.= '<div class="row">';
    $output.= '<div class="col-md-12">';
    $output.= '<div class="row control-group">';
    $output.= '<div class="form-group col-xs-12 controls">';
    $output.= '<input type="text" class="form-control" placeholder="Name" id="name" name="name" required data-validation-required-message="Please enter your name. **need the above syntax here to retain value when I have an error**. ">';
    //if name error
    if(!empty($errors['name'])) {
        $output.= '<div class="error_notice">';
        $output.= '<ul>';
        $output.= '<li>' . $errors["name"] . '</li> <!--Lists down errors-->';
        $output.= '</ul>';
        $output.= '</div>';
    }   
    $output.= '</div>';
    $output.= '</div>';
    $output.= '</div>';

    $output.= '<div class="col-md-2">';
    $output.= '<div class="row control-group">';
    $output.= '<div class="form-group col-xs-12 controls text-center">';
    $output.= '<button type="submit" class="btn btn-theme-dark">Submit</button>';
    $output.= '</div>';
    $output.= '</div>';
    $output.= '</div>';
    $output.= '</div>';
    $output.= '<div id="success"></div>';
    $output.= '</form>';

    return $output;
}

4 个答案:

答案 0 :(得分:1)

喜欢这个吗?

$output .= '<input type="text" class="form-control" placeholder="Name" id="name" name="name" ' . (isset($fields['firstName']) ? ' value="' . e($fields['firstName']) . '"' : '')  . '>';

答案 1 :(得分:1)

有点不清楚从哪里获取值,并将其放入函数get_special_promos_landing_html()。

   db.RunInTransaction(() =>
   {
      foreach (CategorySource category in categories)
      {
         db.Insert(category);
      }
      Console.Out.WriteLine("Categories: \r\n {0}", categories.Count);
   }); db.Commit();

对于上面的代码,如果您使用的是提交按钮,并且希望保留这些值,则需要在代码中的某个位置执行此类操作。

<input type="text" class="form-control" placeholder="First Name" name="firstName" id="firstName" <?php echo isset($fields['firstName']) ? ' value="' . e($fields['firstName']) . '"' : '' ?>>

}

因为提交后您的字段会自动清除。使用$ _POST,您可以将值恢复到字段中。

备选您可以在提交后再次重定向到同一页面,以便再次重新加载您的值。您可以在插入数据库语句等之后将其添加到最后

if ($_POST) {
$somevariable = '<input type="text" class="form-control" placeholder="First Name" name="firstName" id="firstName" value="' . $_POST['firstName'] . '">

答案 2 :(得分:1)

尝试:

$output= '<input type="text" class="form-control" placeholder="Name" id="name" name="name">';
echo $output;

答案 3 :(得分:0)

看起来就像这一行:

<input 
  type="text" 
  class="form-control" 
  placeholder="First Name" 
  name="firstName" 
  id="firstName" 
<?php 
  echo isset($fields['firstName']) ? 
    ' value="' . e($fields['firstName']) . '"' 
    : '' 
?>>

您在回显字符串中使用的ternary operator语法不正确,三元运算符(在echo / print中使用时)应如此表示:

echo (true ? "TRUE" : "FALSE");

而不是:

echo true ? "TRUE" : "FALSE";

我确信您可以看到错误,使用isset只会返回true OR false,具体取决于数据。

所以只需在echo周围添加括号,如下所示:

<?php 
  echo (isset($fields['firstName']) ? 
    ' value="' . e($fields['firstName']) . '"' 
    : '')
?>>

这应该解决它。 :~)

您要求的内容:

$output .= 
"<input type='text'class='form-control' placeholder='First Name' name='firstName' id='firstName'"
. (isset($fields['firstName']) ? " value='{$fields['firstName']}'");

(如果错误请在评论中报告,谢谢)

如果使用PHP&amp; HTML(PHP作为var容器)我建议使用HEREDOC,因为它使您的代码看起来更干净,更容易阅读,示例:(PHP的字符串插值不足以使用三元运算符在HEREDOC内部,但是,您可以预先设置该值,如果Heredoc出现错误,请告诉我,因为Heredoc很痛苦。)

$value = (isset($fields['firstName']) ? "value='{$fields['firstName']'" : "");

$output .= <<<IDENTIFIER_FOR_HEREDOC;
  <input 
    type="text" 
    class="form-control" 
    placeholder="First Name" 
    name="firstName" 
    id="firstName" 
    value="{$value}"
IDENTIFIER_FOR_HEREDOC;