Ben Symfony flaş değişkenleri yanlış şekilde kullanıyor muyum?

2 Cevap php

Bir eylem, ben kullanıcı için bazı geribildirim ayarlayın:

    $this->getUser()->setFlash('message', array(
    "type" => "notice",
    "content" => "Well done buddy, you did it."
    ));

    $this->redirect('home/index');

Görünümünde, ben sadece aşağıdaki kodu kullanabilirsiniz:

<?php if ($sf_user->hasFlash('message')): $message = $sf_user->getFlash('message') ?>
  <p class="<?php echo $message["type"] ?>" ><?php echo $message["content"]?></p>
<?php endif; ?>

Ama bu mesaj görünür asla.

Sorun çalışır anlamına gelir nedenini 'it o disapears kez görünür' değil değil. Sorun görünür asla olmasıdır. Bir kez değil.

Flaş var şimdi kullanıcı nesnesine binded neden ben Symfony 1.2 kullanıyorum, bu.

2 Cevap

Iki setFlash dizeleri ile (dizi değil) ile aynı deneyin. Ben bu işe düşünüyorum. Şablonunda erişirken Symfony dizileri kaçıyor. var_dump($sf_user->getFlash('message')); ne olsun emin olmak için deneyin.

Symfony'de Flaşlar, yani "flaş" bir sayfada tam bir kez mesaj tepkisini göstermek için vardır. Sayfa yenilendiğinde ise, bu flaş artık orada olmayacak.

Yani kullanıcı formu teslim varsayarak, ve eylem aşağıdaki kodu idam

$this->getUser()->setFlash( 'message', 'Some message here' );

Ve görünümü aşağıdaki vardır

# Note: getFlash returns "" if flash is not set
echo $sf_user->getFlash('message');

Sonra formu göndererek, ve böylece bu flaş ayarladıktan sonra görünümüne Bu kullanıcının ilk isteği "Some message here" ve flaş unsetting / kaldırarak dönen GetFlash neden olacaktır. Böylece kullanıcı aynı mesaj için herhangi bir istek şimdi boş bir dize döndürür.

Bu ne demektir, bir flaş sadece bir istek sürer, olduğunu. Bu form olarak aynı sayfada form yanıtlarını görüntülemek için iyi bir yoldur.