Модуль индекса Zend Framework 2 не отображает содержимое

0

Я создал клиентский модуль в своем приложении ZF2 и пользуюсь ServiceManager, как это предлагается в ZF2 Read The Docs. Мой класс модели выглядит следующим образом:

<?php 
namespace Client\Model;
class Client
{
public $id;
public $familyname;
public $businessname;

public function exchangeArray($data)
 {
    $this->id =(!empty(['id'])) ? $data['id'] : null;
    $this->familyname=(!empty(['familyname'])) ? $data['familyname'] : null;
    $this->businessname(!empty(['businessname'])) ? $data['businessname'] : null;
 }
}

My ClientTable.php содержит:

namespace Client\Model;

use Zend\Db\TableGateway\TableGateway;

class ClientTable
{
    protected $tableGateway;

    public function __construct(TableGateway $tableGateway)
    {
        $this->tableGateway = $tableGateway;
    }

    public function fetchAll()
    {
        $resultSet = $this->tableGateway->select();
        return $resultSet;
    }

    public function getClient($id)
    {
        $id = (int) $id;
        $rowset = $this->tableGateway->select(array('id' => $id));
        $row = $rowset->current();
        if (!$row) {
            throw new \Exception("Could not find row $id");
        }
        return $row;
    }

    public function saveClient(Client $client)
    {
        $data = array(
            'familyname' => $client->familyname,
            'businessname' => $client->businessname,
        );

        $id =  (int) $client(id);
        if($id==0){
            $this->tableGateway->insert($data);
        } else {
        if($this->getClient($id)){
            $this->tableGateway->update($data, array('id' => $id));
        } else {
            throw new \Exception('Client id does not exist');
        }
    }
}

}

My ClientController.php выглядит следующим образом:

namespace Client\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Helper\ViewModel;

class ClientController extends AbstractActionController
{
protected $clientTable;

public function getClientTable()
{
    if(!$this->clientTable){
        $sm = $this->getServiceLocator();
        $this->clientTable = $sm->get('Client\Model\ClientTable');
    }
    return $this->clientTable;
}

public function indexAction()
{
    return new ViewModel(array(
        'client' => $this->clientTable->fetchAll(),
    ));
}

public function addAction()
{
    return array();
}

public function editAction()
{
    return array();
}    

}

И последнее, но не менее важное: класс представления выглядит следующим образом:

<?php
$title = 'Client List';
$this->headtitle($title);
?>

<h1><?php echo $this->escapeHtml($title); ?></h1>
<p>
<a href="<?php echo $this->url('client', array('action'=>'add'));?>">Add New Client</a>
</p>

<table class="table">
<tr>
<th>Family Name</th>
<th>Business Name</th>
<th>&nbsp;</th>
</tr>

<?php foreach ($client as $client) : ?>
<tr>
<td><?php echo $this->escapehtml($client->familyname);?></td>
<td><?php echo $this->escapehtml($client->busienssname);?></td>
<td>
<a href="<?php echo $this->url('client', array('action'=>'edit', 
'id'=>$client->$id));?>">Edit</a>
</td>
</tr>
<?php endforeach; ?>
</table>

Я добавил клиентский модуль в application.config.php. Может ли кто-нибудь предложить некоторые способы исправить мою проблему, когда индекс индекса клиента не отображается?

Обновление: обратите внимание, что содержимое layout.phtml - это рендеринг. Однако index.phtml в моем /module/client/view/client/client содержит разметку для добавления или редактирования клиента, который не является рендерингом.

Обновление 2: я не упомянул, что я использовал приложение "Скелет" в качестве основы для этого приложения. Не уверены, есть ли в нем изменения конфигурации, которые вызывают мою проблему?

Обновление 3: Я начал это приложение с намерением использовать Doctrine2 ORM. Однако было решено просто использовать ZendDbAdpater. Я удалил Doctrine ORM из конфигурации приложения. Может ли моя проблема вызвана остаточным кодом Doctrine в проекте? Если да, какие файлы и папки необходимо удалить, чтобы полностью удалить Doctrine 2 из приложения?

Теги:
doctrine2
zend-framework2

1 ответ

0
Лучший ответ
<?php foreach ($client as $client) : ?>

Вы снова используете одну и ту же переменную.

В сценарии просмотра может быть что-то не так. Вы можете обернуть их в блок try и посмотреть на ошибку.

<?php

try {
    $title = 'Client List';
    $this->headtitle($title);
?>
<h1><?php echo $this->escapeHtml($title); ?></h1>
<p>

<a href="<?php echo $this->url('client', array('action'=>'add'));?>">Add New Client</a>

</p>


<table class="table">
    <tr>
        <th>Family Name</th>
        <th>Business Name</th>
        <th>&nbsp;</th>
    </tr>
<?php foreach ($client as $client) : ?>
    <tr>
        <td><?php echo $this->escapehtml($client->familyname);?></td>
        <td><?php echo $this->escapehtml($client->busienssname);?></td>
        <td>
            <a href="<?php echo $this->url('client', array('action'=>'edit', 
                'id'=>$client->$id));?>">Edit</a>
        </td>
    </tr>
<?php endforeach; ?>
</table>

<?php } catch (\Exception $e) {var_dump($e);} ?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню