Witam,
mam mam problem z ktorym tocze walke od kilku godzin i czuje sie zagubiony wiec prosze was o pomoc.
Jestem poczatkujacy w php i to moja pierwsza aplikacjia w framworku zend.
Tworze panel do zarzadzania uzytkownikami i otrzymuje komunikat :
<pre>
Użytkownicy systemu
Nazwa użytkownika Email Hasło
Notice: Undefined variable: user in C:\xampp\htdocs\zend\module\Users\view\users\user-manager\index.phtml on line 12
Notice: Trying to get property of non-object in C:\xampp\htdocs\zend\module\Users\view\users\user-manager\index.phtml on line 12
Notice: Undefined variable: user in C:\xampp\htdocs\zend\module\Users\view\users\user-manager\index.phtml on line 13
Notice: Trying to get property of non-object in C:\xampp\htdocs\zend\module\Users\view\users\user-manager\index.phtml on line 13
Notice: Undefined variable: user in C:\xampp\htdocs\zend\module\Users\view\users\user-manager\index.phtml on line 14
Notice: Trying to get property of non-object in C:\xampp\htdocs\zend\module\Users\view\users\user-manager\index.phtml on line 14
</pre>
zmienna ktora przekazuje z kontrollera istnieje i zawiera tablice z uzytkownikami sprawdzalem za pomoca <<var_dump>>
oto moje klasy :
CONTROLLER
<pre>
<?php
namespace Users\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Authentication\AuthenticationService;
use Zend\Authentication\Adapter\DbTable as DbTableAuthAdapter;
use Users\Form\RegisterForm;
use Users\Form\RegisterFilter;
use Users\Model\User;
use Users\Model\UserTable;
use Users\Model\UserMail;
class UserManagerController extends AbstractActionController
{
public function indexAction()
{
$this->layout('layout/layout');
$userTable = $this->getServiceLocator()->get('UserTable');
$viewModel = new ViewModel(array('users' => $userTable->fetchAll()));
return $viewModel;
}
}
?>
</pre>
VIDOK
<pre>
<h3>Użytkownicy systemu</h3>
<table class="table">
<tr>
<th>Nazwa użytkownika</th>
<th>Email</th>
<th>Hasło</th>
<th> </th>
</tr>
<? foreach($users as $user): ?>
<tr>
<td><?php echo $this->escapeHtml($user->name);?></td>
<td><?php echo $this->escapeHtml($user->email);?></td>
<td><?php echo $this->escapeHtml($user->password);?></td>
<td>
<a href="<?php echo $this->url('users/user-manager', array('action'=>'edit', 'id' => $user->id));?>">Edycja</a> |
<a href="<?php echo $this->url('users/user-manager', array('action'=>'delete', 'id' => $user->id));?>" onclick="return confirm('Jesteś pewien ?')">Usunięcie</a>
</td>
</tr>
<? endforeach; ?>
</table>
</pre>
FUNKCJA DLA SERVICELOCATOR W MODUL.PHP
<pre>
public function getServiceConfig()
{
return array(
'abstract_factories' => array(),
'aliases' => array(),
'factories' => array(
// SERWISY
'AuthService' => function($sm)
{
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$dbTableAuthAdapter = new DbTableAuthAdapter($dbAdapter, 'user','email','password', 'MD5(?)');
$authService = new AuthenticationService();
$authService->setAdapter($dbTableAuthAdapter);
return $authService;
},
'UserTable' => function($sm)
{
$tableGateway = $sm->get('UserTableGateway');
$table = new UserTable($tableGateway);
return $table;
},
'UserTableGateway' => function ($sm)
{
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new User());
return new TableGateway('user', $dbAdapter, null, $resultSetPrototype);
},
'UserEditForm' => function ($sm)
{
$form = new \Users\Form\UserEditForm();
$form->setInputFilter($sm->get('UserEditFilter'));
return $form;
},
'UserEditFilter' => function ($sm)
{
return new \Users\Form\UserEditFilter();
},
)
);
}
</pre>
zmienna przekazuje do widoku, gdy dodalem ten kod do widoku:
<pre>
<?php if ($this->users): ?>
<p>
zmienna zostala przekazana
</p>
<?php endif ?>
</pre>
i wyswietla mi sie tekst zmienna zostala przekazane, wiec nie czaje co jest nie tak i jeszcze raz zwracam sie o pomoc do was