Yii布局不适用于视图

时间:2014-12-28 14:22:01

标签: php yii

我遇到了这个问题,其中视图没有通过服务器上的布局运行,但在本地实例中它可以正常工作而不需要任何更改。实际上有两个视图有这个问题,'索引'视图和'更新'和'创建'视图。这两个视图都部分呈现另一个视图,'index'部分呈现'_view'和'update','create'部分呈现'_form'。在控制器中,我指定应该使用什么布局来呈现视图,并确保不会从处理每个视图的操作覆盖布局。有问题的代码如下:

的index.php

<?php $this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_view',
)); ?>

_view.php

<div class="well">
    <b><?php echo CHtml::encode($data->getAttributeLabel('id')); ?>:</b>
    <?php echo CHtml::link(CHtml::encode($data->id), array('view', 'id'=>$data->id)); ?>
    <br />

    <b><?php echo CHtml::encode($data->getAttributeLabel('naslov')); ?>:</b>
    <?php echo CHtml::encode($data->naslov); ?>
    <br />

    <b><?php echo CHtml::encode($data->getAttributeLabel('category_id')); ?>:</b>
        <?php
            $cat = Category::model()->findByPk($data->category_id);
            $parent = $cat->parent()->find();
            $c = $parent->title." / ".$cat->title;
            echo CHtml::encode($c); ?>
        <br />
    <br />

    <b><?php echo CHtml::encode($data->getAttributeLabel('image_path')); ?>:</b>
    <?php echo CHtml::encode($data->image_path); ?>
    <br />

</div>

update.php和create.php

<?php $this->renderPartial('_form', array('model'=>$model)); ?>

_form.php这个

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'news-form',
    'enableAjaxValidation'=>false,
    'htmlOptions' => array(
    'enctype' => 'multipart/form-data',
    ),
)); ?>

// form code 

<?php $this->endWidget(); ?>

并且在扩展基本控制器的控制器中,我定义了要使用的布局

public $layout='//layouts/column2';

我查看了application.log文件,试图查找可能导致此但未找到任何内容的任何内容。


EDITED:

这是控制器创建操作:

public function actionCreate() {
    $model = new News;
    if (isset($_POST['News'])) {
        $model->attributes = $_POST['News'];
        $model->body = $_POST['News']['body'];
        $model->author = Yii::app()->user->id;
        $model->meta_description = $_POST['News']['meta_description'];
        $path = $this->upload_path;
        $image_temp = CUploadedFile::getInstance($model, 'image_path');
        $new_image_ext = pathinfo($image_temp, PATHINFO_EXTENSION);
        $new_image_subpath = uniqid(rand(), true) . '.' . $new_image_ext;
        $new_image_subpath = substr($new_image_subpath, 0, 1) . '/' . substr($new_image_subpath, 1, 1) . '/' . $new_image_subpath;
        $new_image_path = $path . $new_image_subpath;
        $model->image_path = $new_image_subpath;
        if (!file_exists(dirname($new_image_path))) {
            mkdir(dirname($new_image_path), 0777, true);
        }
    }
    if ($model->save()) {

        $image_temp->saveAs($new_image_path, false);


        $this->redirect(array('view', 'id' => $model->id));
    }

    $this->render('create', array(
        'model' => $model,
    ));
}

更新操作:

public function actionUpdate($id) {
    $model = $this->loadModel($id);
    $this->pageTitle = "Vesti - Izmena vesti: " . $model->naslov . "";

    if (isset($_POST['News'])) {
        $model->attributes = $_POST['News'];
        $model->body = $_POST['News']['body'];
        $model->modified_on = date("d-m-y H:m:s");
        $model->meta_description = $_POST['News']['meta_description'];

        $model->attributes = $_POST['News'];

        if ($_FILES['News']['name']['image_path'] != "") {
            $uploadedFile = CUploadedFile::getInstance($model, 'image_path');
            $path = $this->upload_path;
            $image_temp = CUploadedFile::getInstance($model, 'image_path');
            $new_image_ext = pathinfo($image_temp, PATHINFO_EXTENSION);
            $new_image_subpath = uniqid(rand(), true) . '.' . $new_image_ext;
            $new_image_subpath = substr($new_image_subpath, 0, 1) . '/' . substr($new_image_subpath, 1, 1) . '/' . $new_image_subpath;
            $new_image_path = $path . $new_image_subpath;
            $model->image_path = $new_image_subpath;
            if (!file_exists(dirname($new_image_path))) {
                mkdir(dirname($new_image_path), 0777, true);
            }
        } else {
            unset($model->image_path);
        }

        if ($model->save()) {

            if ($_FILES['News']['name']['image_path'] != "") {
                $image_temp->saveAs($new_image_path, false);
            }

            $this->redirect(array('view', 'id' => $model->id));
        }
    }
    $this->render('update', array(
        'model' => $model,
    ));
}

和_form视图:

<script type="text/javascript">

    function showSEOServices() {
        $("#seo_options").slideToggle();
    }

    function slugPopulate(s, d, a) {
        if(a==1) {
            var d = $("#News_category_id").val();
        } else {
            var s = $("#News_naslov").val();
        }
        $.ajax({
            type: "GET",
            url: 'index.php?r=news/slug',
            data: "s=" + s + "&d=" + d,
            success: function(data) {
                 $("#News_url_slug").val(data);
            }
        });
    }
</script>

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'news-form',
    'enableAjaxValidation'=>false,
    'htmlOptions' => array(
        'enctype' => 'multipart/form-data',
    ),
)); ?>

    <p class="note">Polja sa <span class="required">*</span> su obavezna.</p>

    <?php echo $form->errorSummary($model); ?>

    <div class="row">
            <?php echo $form->labelEx($model,'naslov'); ?>
            <?php echo $form->textField($model,'naslov',array('size'=>60,'maxlength'=>255, 'onChange' => "slugPopulate(this.value, '', 1);")); ?>
            <?php echo $form->error($model,'naslov'); ?>
    </div>

    <div class="row">
        Top sekcija:<br>
        <?php echo $form->checkBox($model,'top_section'); ?>
    </div>

    <div class="row">
        Normalna sekcija:<br>
        <?php echo $form->checkBox($model,'normal_section'); ?>
    </div>

    <div class="row">
        Donja sekcija:<br>
        <?php echo $form->checkBox($model,'bottom_section'); ?>
    </div>

    <div class="row">
        Boja članka u listingu:<br>
        <?php if($model->isNewRecord!='1'){ ?>  
            <input type="color" name="News[news_color]" id="News_news_color" value="<?php echo $model->news_color; ?>">
        <?php } else { ?>
            <input type="color" name="News[news_color]" id="News_news_color" value="">
        <?php } ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'body'); ?>
        <?php $this->widget('ext.editMe.widgets.ExtEditMe', array(
                                            'model'=>$model,
                                            'attribute'=>'body',

        )); ?>      
        <?php echo $form->error($model,'body'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'category_id'); ?>
        <?php echo $form->dropDownList($model, 'category_id', $model->getCategoryOptions(),array('onChange' => "slugPopulate('', this.value, 2);")); ?>
        <?php echo $form->error($model,'category_id'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'image_path'); ?>
        <?php echo CHtml::activeFileField($model, 'image_path'); ?> 
        <?php echo $form->error($model,'image_path'); ?>
    </div>
    <!-- FOTOGRAFIJA -->
    <?php if($model->isNewRecord!='1'){ ?>
        <div class="row">
            <?php echo CHtml::image('/resources/uploads/news/'.$model->image_path,"image",array("width"=>200, "class" => "img-thumbnail")); ?>
        </div>
    <?php } ?>
    <!-- FOTOGRAFIJA END -->

     <!-- SEO opcije -->
    <button type="button" onClick="showSEOServices()" class="btn btn-labeled btn-default">
        <span class="btn-label"><i class="fa fa-map-marker"></i> </span>Prikaži opcije za SEO
    </button>

    <div id="seo_options" class="alert alert-info" style="display:none;">
        <div class="row">
            <?php echo $form->labelEx($model,'url_slug'); ?>
            <?php echo $form->textField($model,'url_slug',array('size'=>60,'maxlength'=>255)); ?>
            <?php echo $form->error($model,'url_slug'); ?>
        </div>

        <div class="row">
            <?php echo $form->labelEx($model,'meta_title'); ?>
            <?php echo $form->textField($model,'meta_title',array('size'=>60,'maxlength'=>255)); ?>
            <?php echo $form->error($model,'meta_title'); ?>
        </div>

        <div class="row">
            <?php echo $form->labelEx($model,'meta_description'); ?>
            <?php echo $form->textArea($model,'meta_description',array('rows'=>6, 'cols'=>50)); ?>
            <?php echo $form->error($model,'meta_description'); ?>
        </div>

        <div class="row">
            <?php echo $form->labelEx($model,'meta_keywords'); ?>
            <?php echo $form->textField($model,'meta_keywords',array('size'=>60,'maxlength'=>255)); ?>
            <?php echo $form->error($model,'meta_keywords'); ?>
        </div>
    </div>
    <!-- SEO opcije kraj -->

    <div class="row">
        <?php echo $form->labelEx($model,'status'); ?>
        <?php echo $form->dropDownList($model, 'status', $model->getStatusOptions()); ?>
        <?php echo $form->error($model,'status'); ?>
    </div>

    <div class="row buttons">
        <button class="btn btn-success ladda-button" data-style="expand-right"><span class="ladda-label">Sačuvaj</span></button>

        <?php //echo CHtml::submitButton($model->isNewRecord ? 'Kreiraj' : 'Sačuvaj', array("class" => "btn btn-success ladda-button", "data-style" => "expand-right")); ?>
    </div>

<?php $this->endWidget(); ?>

0 个答案:

没有答案