0

顧客がログインしているかどうかにかかわらず、1つのフォームを表示および非表示にする必要があります。

私はこのヘルパーを持っています:

    <?php
    if ($this->helper('customer')->isLoggedIn() ) {
        echo "Hide Form";
    } else {
        echo "<form id="form1" name="form1" method="post" action="post.php">
<input name="Type your name" type="text" value="name" />
<label>
  <input type="submit" name="send" id="send" value="Submit" />
</label>
</form>"; 
    }
    ?>

ありがとう

4

3 に答える 3

11
<?php
    if ($this->helper('customer')->isLoggedIn() ) {
        $showHide = "style=display:none";
    } else { 
        $showHide = "style=display:block";
    }?>
    <form id="form1" name="form1" method="post" action="post.php" <?php echo $showHide;?> >
        <input name="Type your name" type="text" value="name" />
        <label>
            <input type="submit" name="send" id="send" value="Submit" />
        </label>
    </form>
于 2012-08-08T21:09:37.447 に答える
1

私の推測では、あなたの問題は、エコーしている html の引用符から来ているということです。Php は、そのチャンクのecho "<form id="後に何をすべきかわからない意味不明なものが続くと認識します。

解決策は、そのコードのチャンクがどこにあるかによって異なります。テンプレート (.phtml) ファイルにある場合は、Kalpesh Mehta の方法が機能します。

ブロック、ヘルパー、またはコントローラーのようなものにある場合、それらのソリューションは機能しません。その場合の最も簡単な解決策は、外側の 2 つの二重引用符 (") を単一引用符 (') に変更することです。

于 2012-08-08T21:32:29.180 に答える
0

私はレビューファイル.phtmlでこのオプションを試しました

<script type="text/javascript">
function hideshow(which){
if (!document.getElementById)
return
if (which.style.display=="block")
which.style.display="none"
else
which.style.display="block"
}
</script>
<?php
    if ($this->helper('customer')->isLoggedIn() ) {
        $showHide = "style=display:none";
    } else { 
        $showHide = "style=display:block";
    }?>
<?php if(Mage::helper('oscheckout')->isCouponActive()):?>
<div class="fivecol" id="coupon-container">
    <?php echo $this->getChildHtml('coupon') ?>
</div>
于 2012-08-09T06:33:53.840 に答える