Temat: Wyświetlenie "otoczki" session->flash tylko kidy coś w...
Hyh, też robię w jQuery UI z użyciem CakePHP :) i ja rozwiązałem flasha tak:
Zrób plik app/views/elements/flash.ctp o zawartości
<?php if($session->check('Message.' . $key)): ?>
<div class="ui-widget align-center flash">
<?php if($type == 'error'): ?>
<div class="ui-state-error ui-corner-all align-left" style="padding: 0 0.5em;">
<p class="align-center">
<span class="ui-icon ui-icon-alert float-left" style="margin-right: 0.3em;"></span>
<?php echo $session->read('Message.' . $key . '.message'); ?>
</p>
</div>
<?php elseif($type == 'highlight'): ?>
<div class="ui-state-highlight ui-corner-all align-left" style="padding: 0 0.5em;">
<p class="align-center">
<span class="ui-icon ui-icon-info float-left" style="margin-right: 0.3em;"></span>
<?php echo $session->read('Message.' . $key . '.message'); ?>
</p>
</div>
<?php endif; ?>
</div>
<?php $session->del('Message.' . $key); ?>
<?php endif; ?>
Wywołujesz przez:
<?php echo $this->element('flash', array('key' => 'auth')); ?>
<?php echo $this->element('flash', array('key' => 'auth', 'type' => 'hightlight)); ?>
Dodatkowo u siebie zrobiłem element default_flashes.ctp:
<?php echo $this->element('flash', array('key' => 'flash', 'type' => 'highlight')); ?>
<?php echo $this->element('flash', array('key' => 'flashError', 'type' => 'error')); ?>
<?php echo $this->element('flash', array('key' => 'auth', 'type' => 'error')); ?>
a w kontrolerach itp. generuje sobie flashe tak:
// highlight
$this->Session->setFlash(__d('admin', 'Group saved', true));
// error
$this->Session->setFlash(__d('admin', 'Group could not be saved. Please, try again.', true), null, null, 'flashError');
dzięki temu flashError bedzie klasu ui-state-error w widoku, a normalny flash w ui-state-highlight.
Miłego pehapowania :)
Tomasz Wójcik edytował(a) ten post dnia 04.12.09 o godzinie 02:14