【问题标题】:Change display html table in view on Yii Framework在 Yii 框架的视图中更改显示 html 表格
【发布时间】:2012-12-27 18:28:09
【问题描述】:

我使用 Yii php 框架制作了一个财务管理模块,并通过 Gii 安装了模型、控制器、CRUD 和视图。现在我想在视图移动页面内显示为每个财务移动创建的内容,每行一个移动 - 例如在 admin.php(管理控件)中,但无法更新它们。

我对 Yii 很陌生,尽管我很努力,但 Yii 似乎太晦涩难懂了,我什么也做不了。如何让我的 motion/views/view.php 显示一个 HTML 表格,其中包含我的移动表格中的所有条目?

--更新:

这里是代码形式_view.php

    <?php

/* @var $this MovementController */
/* @var $data Financialmovement */

$due = gmdate( 'd/m/Y', $data->due_date );

if ( $data->pay_date != 0 ) {
    $pay = gmdate( 'd/m/Y', $data->pay_date );
} else {
    $pay = 'Indisponível';
}
switch ( $data->category ):
    case ('trn'):
        $category = "Transporte";
        break;
    case ('fin'):
        $category = "Financeiro";
        break;
    default :
        $category = 'Erro! Valor nulo.';
endswitch;

if ( $data->condition = 1 ) {
    $condition = 'Concluída';
} else {
    $condition = 'Aberta';
}

if ( $data->movement_type = 1 ) {
    $type = 'Saída';
} else {
    $type = 'Entrada';
}


$value = $data->value;
$patern = '/\./';
$replacement = ',';
$value = preg_replace( $patern, $replacement, $value );

$coin = $data->coin_type;
$patern = '/s/';
$replacement = '$';
$coin = preg_replace( $patern, $replacement, $coin );

?>

<tr class="wide form">
    <td >
        <?php echo $data->getAttributeLabel( 'id' ); ?>:
        <?php echo CHtml::link( ( $data->id ), array( 'view', 'id' => $data->id ) ); ?>

    </td>
    <td >
        <?php echo $data->getAttributeLabel( 'category' ); ?>:
        <?php echo $category; ?>

    </td>
    <td >
        <?php echo $data->getAttributeLabel( 'value' ); ?>:
        <?php echo '<span class="capital">' . $coin . "</span> " . $value; ?>

    </td>
    <td >
        <?php echo $data->getAttributeLabel( 'due_date' ); ?>:
        <?php echo $due; ?>

    </td>
    <td >
        <?php echo $data->getAttributeLabel( 'pay_date' ); ?>:
        <?php echo $pay; ?>

    </td>
    <td >
        <?php echo $data->getAttributeLabel( 'description' ); ?>:
        <?php echo $data->description; ?>

    </td>
    <td >
        <?php echo $data->getAttributeLabel( 'condition' ); ?>:
        <?php echo $condition; ?>

    </td>
    <td >
        <?php echo $data->getAttributeLabel( 'movement_type' ); ?>:
        <?php echo $type; ?>

    </td>
    <td >
        <?php echo $data->getAttributeLabel( 'observation' ); ?>:
        <?php echo $data->observation; ?>

    </td>
</tr>

这里是view.php的代码:

    <?php

/* @var $this MovementController */
/* @var $model Financialmovement */

$this->breadcrumbs = array(
    'Financial Movements' => array( 'index' ),
    $model->id,
);

$this->menu = array(
    array( 'label' => 'List Financial Movement', 'url' => array( 'index' ) ),
    array( 'label' => 'Create Financial Movement', 'url' => array( 'create' ) ),
    array( 'label' => 'Update Financial Movement', 'url' => array( 'update', 'id' => $model->id ) ),
    array( 'label' => 'Delete Financial Movement', 'url' => '#', 'linkOptions' => array( 'submit' => array( 'delete', 'id' => $model->id ), 'confirm' => 'Are you sure you want to delete this item?' ) ),
    array( 'label' => 'Manage Financial Movement', 'url' => array( 'admin' ) ),
);

?>

<h1>View Financial Movement #<?php echo $model->id; ?></h1>
<table>
    <tr>
        <td>Id</td>
    </tr>
    <?php

    $dataProvider = new CActiveDataProvider( 'Financialmovement' );

    $this->widget( 'zii.widgets.CListView', array(
        'dataProvider' => $dataProvider,
        'itemView' => '_view', // refers to the partial view named '_view'
        'sortableAttributes' => array(
            'id',
            'due_date',
            'pay_date',
            'category',
        ),
    ) );

    ?>
</table>

【问题讨论】:

  • 回显数据并检查它在视图页面上可用的格式并根据该格式设置html视图
  • w00t 不要把逻辑放在你的视野里,那太丑了

标签: php view yii html-table


【解决方案1】:

首先你应该通过 CActiveDataProvider 获取控制器中的表数据。然后在视图中您可以使用小部件 - CGridView。使用此小部件,您可以设置所需的参数。列、过滤器等。您也可以粘贴您的代码,我们将尝试确定您的问题。 Yii 很简单:)

【讨论】:

  • 但是我应该把它放在_view文件还是它自己的视图文件中?我确实在 view.php 中使用了 CGridView ,但它没有效果。我在 _view.php 中放了什么,在 view.php 中放了什么?
  • 我已经更新了问题以保留代码,希望它可以帮助你帮助我。
  • 如我所见,您需要在表格中显示计算数据,对吗?但 CGridView 不支持每行的 _view.php 模板。你有两种方法来决定这个问题。 1. CGridView 有列设置:'columns'=>array(array('name'=>'id', 'value' => '$data->id'))。在这种情况下,您可以根据需要自定义表格的输出列。第二种方式:使用CListView并手动建表。
  • 我是否也需要更改_view?我补充说:$this-&gt;widget('zii.widgets.CListView', array( 'dataProvider'=&gt;$dataProvider, 'itemView'=&gt;'_view', // refers to the partial view named '_view' 'sortableAttributes'=&gt;array( 'due_date', 'pay_date', ), ));
  • 在小部件之前,您需要添加表头:...。然后定义widget,根据table html修改_view.php(将div改为TR和TD)。在小部件之后 - 关闭表格:
    ...
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
  • 2019-11-28
  • 2018-10-01
相关资源
最近更新 更多