2013-05-26 152 views
1

所以我打算用多個文本輸入框製作幾個表單,所以我想製作一個函數來幫助自動化這將是一個好主意。我可以創建一個PHP函數來創建文本輸入字段嗎?

下面是我提出的功能:但是,我得到的結果似乎很奇怪,是「回聲」和單引號混雜的組合。那裏的一切都看起來正確嗎?我是PHP的新手,所以如果我錯過了一個明顯的錯誤,我真的很抱歉。

function makeTextInputField($name) 
    { 
echo '<label for = "<?php $name ?>"> <?php ucfirst($name) ?> </label><input type = "text" name = "<?php $name?>"></input>'; 
    } 

回答

1

Working Demo

因爲你可以在PHP strings插入換行符,可以讓你的功能更具可讀性使用裏面的變量:

<?php 

    function makeTextInputField($name) { 
     $text = ucfirst($name); 
     echo " 
      <label for='{$name}'>{$text}</label> 
      <input type='text' name='{$name}' /> 
     "; 
    } 

?> 

而且whenver你想使用它:

<h1>Welcome</h1> 
<?php makeTextInputField('email'); ?> 
引號內

輸出

<h1>Welcome</h1> 
<label for='email'>Email</label> 
<input type='text' name='email' /> 
3

你不應該使用更多的標籤PHP

function makeTextInputField($name) 
     { 
    echo '<label for = "'.$name.'">'.ucfirst($name).'</label><input type = "text" name = "'.$name.'" />'; 
     } 
+0

的'input'標籤必須使用此語法關閉。沒有必要''。 – 2013-05-26 08:27:53

0
function makeTextInputField($name) 
{ 
echo '<label for = "'.$name.'"> '.ucfirst($name).'</label><input type = "text" name = "'.$name.'"></input>'; 
} 

這應該在裏面工作。

你已經在php。所以不需要<?php標籤。用a連接字符串。

0

試用sprintf

function textInput($name) 
{ 
    $html = '<label for="%1$s">%2$s</label><input type="text" name="%1$s"/>'; 
    echo sprintf($html, $name, ucfirst($name)); 
} 
0

您的問題是,您在PHP代碼中打開新的PHP標記,實際上並不是必需的。試試這個功能,看看它是否爲你工作:

function makeTextInputField($name) 
{ 
    echo sprintf('<label for="%s">%s</label> <input type="text" name="%s"></input>', $name, ucfirst($name), $name); 
} 
+0

我想人們不喜歡'sprintf'。好難過。 :( – elclanrs

0
<?php 

class DeInput 
{ 
    protected $_format = '<div> 
       <label for="%s">%s</label> 
       <input class="formfield" type="text" name="%s" value="%s"> 
       </div>'; 
     public function render($content,$getFullyQualifiedName,$getValue,$getLabel) 
    { 

     $name = htmlentities($getFullyQualifiedName); 
     $label = htmlentities($getLabel); 
     $value = htmlentities($getValue); 
     $markup = sprintf($this->_format, $name, $label, $name, $value); 
     return $markup; 
    } 


} 
0

把PHP代碼,所以我使用(。)指向的字符串相結合可以用來有些不好的做法。

這是我的例子:

function makeTextInputField($name) { 
    echo '<label for="'. $name .'">'.ucfirst($name).'</label>'; 
    echo '<input type="text" name="'.$name .' />'; 
} 
0

使用return這一翻譯回聲的,它會更容易使用結果來處理。 您也可以生成元素拆分成不同的功能,更加靈活:``

function createLabel($for,$labelText){ 
    return '<label for = "'.$for.'"> '.ucfirst($labelText).'</label>'; 
} 

function createTextInput($name,$value,$id){ 
    return '<input type = "text" name = "'.$name.'" id="'.$id.'">'.$value.'</input>'; 
} 

function myTextInput($name,$value,$labelText){ 
    $id = 'my_input_'.$name; 
    return createLabel($id,$labelText).createTextInput($name,$value,$id); 
} 

echo myTextInput('email','','Type you email'); 
相關問題