konto usunięte

Temat: Sprawdzenie czy użytkownik jest zalogowany w Layoucie.

Witam.

Jak mogę sprawdzić w layoucie fakt czy użytkownik jest zalogowany. Bo od tego zależy jaki komunikat i menu mu wyświetlę.

Obecnie znalazłem rozwiązanie, żeby zrobić helper, który zwraca partial, no ale bez przesady, nie będę pchać w partiala połowy layoutu, w końcu po to on jest, żeby w nim trzymać zarys strony.

Obecnie wygląda to tak:
 
<?= $this->menuHelper(123) ?>
<div class="content">
<?php echo $this->layout()->content; ?>
</div>


A chyba zdecydowanie lepiej wyglądało by tak:

<? if(zalogowany):?>
<div class="menu">
partial
</div>
<? endif; ?>

<div class="content">
<?php echo $this->layout()->content; ?>
</div>


Wiem, że mogę z kontrolera przekazać zmienną do laya, ale mam 25 kontrolerów. W każdym muszę dodawać linijkę o przekazaniu boola czy użytkownik jest zalogowany? A może jest jakiś kruczek, którego jeszcze nie zdążyłem poznać?Daniel Kossakowski edytował(a) ten post dnia 29.03.13 o godzinie 12:52

konto usunięte

Temat: Sprawdzenie czy użytkownik jest zalogowany w Layoucie.

Daniel Kossakowski:
Witam.

Jak mogę sprawdzić w layoucie fakt czy użytkownik jest zalogowany. Bo od tego zależy jaki komunikat i menu mu wyświetlę.

Obecnie znalazłem rozwiązanie, żeby zrobić helper, który zwraca partial, no ale bez przesady, nie będę pchać w partiala połowy layoutu, w końcu po to on jest, żeby w nim trzymać zarys strony.

Obecnie wygląda to tak:
 
<?= $this->menuHelper(123) ?>
<div class="content">
<?php echo $this->layout()->content; ?>
</div>


A chyba zdecydowanie lepiej wyglądało by tak:

<? if(zalogowany):?>
<div class="menu">
partial
</div>
<? endif; ?>

<div class="content">
<?php echo $this->layout()->content; ?>
</div>


Wiem, że mogę z kontrolera przekazać zmienną do laya, ale mam 25 kontrolerów. W każdym muszę dodawać linijkę o przekazaniu boola czy użytkownik jest zalogowany? A może jest jakiś kruczek, którego jeszcze nie zdążyłem poznać?

Plugin przekazujący zmienną do laya. Poszukaj w googlu, jest tego trochę...
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Temat: Sprawdzenie czy użytkownik jest zalogowany w Layoucie.

Daniel Kossakowski:
Wiem, że mogę z kontrolera przekazać zmienną do laya, ale mam 25 kontrolerów. W każdym muszę dodawać linijkę o przekazaniu boola czy użytkownik jest zalogowany? A może jest jakiś kruczek, którego jeszcze nie zdążyłem poznać?

Jeśli masz 25 kontrolerów to czy wszystkie zawsze dziedziczą po Zend_Controller_Action, czy masz swój kontroler pośredni, po którym dziedziczą pozostałe? Chodzi mi o coś w stylu:

class Moj_Controller extends Zend_Controller_Action
class IndexController extends Moj_Controller

i do Moj_Controller pchać całą logikę wspólnąBartosz Ratajczyk edytował(a) ten post dnia 29.03.13 o godzinie 22:46

konto usunięte

Temat: Sprawdzenie czy użytkownik jest zalogowany w Layoucie.

Wszystkie dziedziczą po Zend_Controller_Action.

Rozumiem, że sugerujesz by dodać jakiegoś posrednika i w nim pchać do layoutu zmienną z informacją? W sumie to o wiele lepsze rozwiązanie, niż aktualne.
Marcin Lewandowski

Marcin Lewandowski Programista
PHP/MySQL,
poszukuję...

Temat: Sprawdzenie czy użytkownik jest zalogowany w Layoucie.

A nie lepiej z helpera widoku zwracać info czy zalogowany czy nie ?


<?php if($this->zalogowany()): ?>
... kod HTML ...
<?php endif; ?>
Marcin Federowicz

Marcin Federowicz Morizon.pl - Od
wyszukania do
zamieszkania

Temat: Sprawdzenie czy użytkownik jest zalogowany w Layoucie.

W katalogu application/view/helpers tworzymy sobie plik o nazwie User.php
 
<?php
/**
* User.php
*/

class Application_View_Helper_User extends Zend_View_Helper_Abstract
{
/**
* User Object
* @var array
*/
protected $_identity;

/**
* Helper init
* @return Application_View_Helper_User
*/
public function user()
{
if (null == $this->_identity) {
if (Zend_Auth::getInstance()->hasIdentity()) {
$this->_identity = Zend_Auth::getInstance()->getIdentity();
}
}
return $this;
}
/**
* Check if user is logged
* @return bool
*/
public function isLogged()
{
if (Zend_Auth::getInstance()->hasIdentity()){
return true;
}else{
return false;
}

}
/**
* Display login or displayname of user
*
* @return string|null
*/
public function displayName()
{
if (isset($this->_identity->login)) return $this->_identity->login;
if (isset($this->_identity->displayname)) return $this->_identity->displayname;
return null;
}


}


Następnie gdy mamy już zrobiony helper używamy go w następujący sposób:

<?php if ($this->user()->isLogged()): ?>
<?php echo $this->user()->displayName();?>
<?php else: ?>
<?php echo "Guest";?>
<?php endif;?>

Warto też poczytać trochę o autoryzacji:
http://framework.zend.com/manual/1.12/en/zend.auth.int...

Informacje na temat usera zapisujemy sobie w odpowiednim obiekcie sesyjnym , a potem do niego sięgamy przy pomocy helpera i odpowiednich metod w nim dostępnych. Oczywiście powyższe to tylko przykład który można sobie samemu według woli rozbudować :)

konto usunięte

Temat: Sprawdzenie czy użytkownik jest zalogowany w Layoucie.

Dziękuję Wam za odpowiedzi.

Stworzyłem helper na podstawie powyższego kodu i w zasadzie wpadłem na coś dziwnego:

Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'User' was not found in the registry; used paths:

Zend_View_Helper_: Zend/View/Helper/:/home/.../application/views/helpers/' in /home/.../library/Zend/Loader/PluginLoader.php:412


Plik oczywiście istnieje i ma uprawienia odczytu:

~/application/views/helpers) - (root)
# ls
total 4.0K
-rw-r--r-- 1 stream http 733 Apr 5 15:32 User.php


Zend go nie widzi, mimo że szuka w tym katalogu (ścieżka z drugiej linii błędu)

konto usunięte

Temat: Sprawdzenie czy użytkownik jest zalogowany w Layoucie.

Daniel K.:
Dziękuję Wam za odpowiedzi.

Stworzyłem helper na podstawie powyższego kodu i w zasadzie wpadłem na coś dziwnego:

Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'User' was not found in the registry; used paths:

Zend_View_Helper_: Zend/View/Helper/:/home/.../application/views/helpers/' in /home/.../library/Zend/Loader/PluginLoader.php:412


Plik oczywiście istnieje i ma uprawienia odczytu:

~/application/views/helpers) - (root)
# ls
total 4.0K
-rw-r--r-- 1 stream http 733 Apr 5 15:32 User.php


Zend go nie widzi, mimo że szuka w tym katalogu (ścieżka z drugiej linii błędu)

A dodajesz helper (AddHelperPath) do Zend_View?
Marcin Lewandowski

Marcin Lewandowski Programista
PHP/MySQL,
poszukuję...

Temat: Sprawdzenie czy użytkownik jest zalogowany w Layoucie.

Zmień nazwę na Zend_View_Helper_User i powinien znaleźć.

konto usunięte

Temat: Sprawdzenie czy użytkownik jest zalogowany w Layoucie.

To było to, dziękuję.

Następna dyskusja:

[ZF] ZF 1-0-1 bez PDO - czy...




Wyślij zaproszenie do