0

Symfony 1.4.20を使ってサイトを開発していますが、デザイナーはこの画像のようなものを望んでいます

これはそれぞれ管理モジュール生成トラフ タスクdoctrine:generate-adminです。

このタスクを達成するにはどうすればよいですか? タブで作成されたすべてのインターフェイスで動作するということですか?

編集

@antony による提案に基づいて、私はこれを行います: 内に components.class.php を作成し/frontend/modules/emisores/actions/components.class.php、クラス内にこのコードを追加します:

class emisoresComponents extends sfComponents {

    public function executeIndex(sfWebRequest $request) {
        $this->sdriving_emisors = Doctrine_Core::getTable('SdrivingEmisor')->createQuery('a')->execute();
    }
}

タブが作成されるビューにコンポーネントを含めます

<?php include_component('emisores'); ?>

しかし、私はこのエラーが発生します

sfComponents の初期化に失敗しました。

どうしたの?

EDIT2 タブ内でページネーションを取得するのではなく、モジュールにリダイレクトされたため、ページネーションでいくつかの問題が発生しています。コンポーネントを次のように変更します。

public function executeIndex(sfWebRequest $request) {
        $this->pager = new sfDoctrinePager('SdrivingEmisor', 10);
        $this->pager->setQuery(Doctrine_Core::getTable('SdrivingEmisor')->createQuery('a'));
        $this->pager->setPage($request->getParameter('page', 1));
        $this->pager->init();
}

次に、ビュー (_index.php) に次のように書きました。

<?php if (count($pager) > 0): ?>
    <table class="table table-condensed table-striped table-bordered table-hover marginBottom">
        <thead>
            <tr>
                <th><?php echo __('Número') ?></th>
                <th>&nbsp;</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($pager->getResults() as $sdriving_emisor): ?>
                <tr>
                    <td><?php echo $sdriving_emisor->getNumero() ?></td>
                    <td>
                        <a href="<?php echo url_for('emisores/edit?idemisor=' . $sdriving_emisor->getIdemisor() . '&idempresa=' . $sdriving_emisor->getIdempresa()) ?>" class="btn btn-success btn-mini">Editar</a>
                        <a href="<?php echo url_for('emisores/delete?idemisor=' . $sdriving_emisor->getIdemisor() . '&idempresa=' . $sdriving_emisor->getIdempresa()) ?>" class="btn btn-danger btn-mini">Eliminar</a>
                    </td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
<?php else: ?>
    <div class="alert alert-block">
        <h4><?php echo __('Información!') ?></h4>
        <?php echo __('No se ha creado ningún emisor aún. Haga clic en el botón "Crear Nuevo" para crear uno.') ?>
    </div>
<?php endif; ?>

<div class="pagination">
    <strong><?php echo count($pager) ?></strong> <?php echo __('emisores encontrados') ?>
    <?php if ($pager->haveToPaginate()): ?>
        <div class="clearfix"></div>
        <ul>
            <li><?php echo link_to(__('Anterior'), 'emisores/index?page=' . $pager->getPreviousPage()) ?></li>
            <?php $links = $pager->getLinks(); ?>
            <?php foreach ($links as $page): ?>
                <li>
                    <?php echo ($page == $pager->getPage()) ? $page : link_to($page, 'emisores/index?page=' . $page); ?>
                    <?php if ($page != $pager->getCurrentMaxLink()): ?> 
                    <?php endif ?>
                </li>
            <?php endforeach; ?>
            <li><?php echo link_to(__('Siguiente'), 'emisores/index?page=' . $pager->getNextPage()) ?></li>
        </ul>
    <?php endif; ?>
</div>

しかし、私が言ったようにemisor、アクティブなタブ内のページネーションではなくモジュールにリダイレクトされます。何かアドバイスはありますか?

4

1 に答える 1

2

タブを使用しているという事実はあまり変わらないはずです。各タブの CRUD タスクを処理する個別のモジュールを作成します。パーシャルを使用して、それらを usario モジュールのテンプレートに埋め込む必要がある場合があります。たとえば、各タブを_form.phpパーシャルに格納すると、構造は次のようになります。

   \app
     \admin
         \modules
            \usario
               \actions
               \templates
                  editSuccess.php
                  _form.php
            \emisore
               \actions
               \templates
                  _form.php
            \maquina
               \actions
               \templates
                  _form.php

いくつかの異なる方法で、各フォーム パーシャルをユーザーeditSuccess.phpテンプレートに含めることができます。ユーザー編集アクションでフォームを作成するか、コンポーネントを使用できます。

// app\admin\modules\usario\actions\actions.class.php
public function executeEdit(sfWebRequest $request)
{
    $usario = // Code to usario;
    $this->usario = new UsarioForm($usario);

    $emisore = // Code to get emisore;
    $this->emisore = new EmisoreForm($emisore);

    //...
}

public function executeUpdate(sfWebRequest $request)
{
    // ... Do update here

    // Keep track of the tab being edited
    $this->getUser()->setFlash('activeTab', 'usario');
}

または、他のモジュールごとにコンポーネント クラスを作成します。

// app\admin\modules\maquina\actions\components.class.php
public function executeNew(sfWebRequest $request)
{
   $maquina = // Code to get Maquina;
   $this->form = new MaquinaForm($maquina);
}

このようにテンプレートに埋め込みます。また、セッション フラッシュ オブジェクトで編集されたばかりのタブを追跡します。

<!-- app\admin\modules\usario\templates\editSuccess.php -->

<div class="tab-content<?php echo $sf_user->getFlash('activeTab') == 'usario' ? ' active' : '' ?>">
    <?php include_partial('usario/form', array('form' => $usarioForm))); ?>
</div>

<div class="tab-content<?php echo $sf_user->getFlash('activeTab') == 'emisore' ? ' active' : '' ?>">
    <?php include_partial('emisore/form', array('form' => $emisoreForm))); ?>
</div>

<div class="tab-content<?php echo $sf_user->getFlash('activeTab') == 'maquina' ? ' active' : '' ?>">
    <?php include_component('maquina', 'form'); ?>
</div>
于 2013-06-10T07:29:09.607 に答える