この質問は、性質が似ている以前の質問に基づいています。この質問は、次のクラスに基づいて、html を画面に出力する方法に関する 2 つの部分からなる質問です。
その質問への回答に基づいて、次のように作成しました。
class Form{
protected $_html = '';
public function __construct(){
$this->init();
}
public function init(){
}
public function open_form(){
$this->_html .= '<form>';
}
public function elements(){
$this->_html .= 'element';
}
public function close_form(){
$this->_html .= '</form>';
}
public function create_form(){
$this->open_form();
$this->elements();
$this->close_form();
}
public function __toString(){
return $this->_html;
}
}
このクラスの問題は、次の場合です。
$form = new Form
echo $form->create_form();
その後、何も印刷されません。ただし、create_form を次のように変更すると、次のようになります。
public function create_form(){
$this->open_form();
$this->elements();
$this->close_form();
echo $this->_html;
}
その後、動作し、次のように表示されます。
<form>elements</form>
どうしてこれなの?どうすれば修正できますか?
この質問の 2 番目の部分は、私は関数を持っているということです。隠しフィールドをフォームにエコーするこの関数の出力を変更することはできません。問題は、私が行う場合です:
public function create_form(){
$this->open_form();
$this->elements();
function_echoes_hidden_fields();
$this->close_form();
echo $this->_html;
}
// Sample function to echo hidden fields.
public function function_echoes_hidden_fields(){
echo "hidden fields";
}
私は今見ます:
"hidden fields"
<form>elements</form>
この問題をどのように解決しますか?
つまり、その値を表示したい場合は、値を返す関数をエコーアウトする必要がありますが、エコーは処理をすぐにエスケープし、値をエコーアウトします。
私の問題は、それらを一緒に使用してフォームを作成しようとしていることです。