2014-11-18 5 views
0

Мне известно, что Yii и я пытаюсь изучить некоторые из основных функций. Я использую базовое приложение, используемое Yii, но с моими собственными моделями. Все до сих пор работало. Теперь я пытаюсь добавить комментарии к элементам. Я создал виджет, и я хочу, чтобы кнопка отправлялась на клик данные формы и не приводила меня к странице создания по умолчанию.Представляем текст с Yii

Код, используемый для инициализации виджета

<?php 
    $this->widget('application.components.Comment', array(
     'url'=>'url', 
    )); 
?> 

Comment.php

<?php 
class Comment extends CWidget { 

public $comments = array(); 
public $url = ''; 

public function run() { 
    $model=new AlbumComment; 

    // Uncomment the following line if AJAX validation is needed 
    // $this->performAjaxValidation($model); 

    if(isset($_POST['AlbumComment'])) 
    { 
     $model->attributes=$_POST['AlbumComment']; 
     if($model->save()) 
      $this->redirect(array('view','id'=>$model->comment_Id)); 
    } 
    $this->render('comment', array('url' => $this->url)); 
} 
}?> 

Comment.php

<?php echo CHtml::beginForm('Create', 'post', array('id'=>'commentForm')); ?> 
<div class='addComment' style='display: block; width: 170px;'> 
<div id='commentBanner' style='color: #298dcd; background: none repeat scroll 0 0 #b7d6e7; padding-left: 15px; font-weight: 600; font-size: 12px;'>Write Commit</div> 
<?php echo CHtml::textField('comment', '', array('style'=>'height: 25px; width: 164px; margin: 5px 0;'));?> 
<?php 
    $id = preg_match('/\d$/', Yii::app()->request->url, $model); 
    echo CHtml::textField('commentId', $id, array('style'=>'display:none;'));?> 

<?php 
    $pattern = '/\d$/'; 
    $id = preg_match('/\d$/', Yii::app()->request->url, $model); 
    //$url = Yii::app()->createUrl('AlbumComment/Create', array('album_Id'=>$id)); 
    echo CHtml::button(
    'submit', 
    array(
     'submit'=>'components/Comment', 
    ));?> 
</div> 

Это перенаправляет меня на страницу создания в любую модели я м, но я хочу, чтобы он автоматически отправлял введенный текст и сохранить в db для модели, в которой я включен. Надеюсь, это достаточно ясно, и любая помощь приветствуется.

EDIT: Я получил его, чтобы предоставить мне данные, представленные правильно. Последняя часть становится его направить Comment.php и не AlbumCommentController.php

Я пробовал:

echo CHtml::button(
'submit', 
array(
    'submit'=>'components/Comment', 
));?> 

я получаю: система не в состоянии найти требуемое действие «компоненты/комментарий». Я получил 'submit' => 'Comment', но получил: система не может найти запрошенное действие «Комментарий».

Любые идеи?

+0

Не могли бы вы рассказать мне пример «url»? –

+0

url example: http://127.0.0.1/trackstar/yii/framework/trackstar/index.php/artist/1 – user2812097

ответ

0

Прежде всего, ниже код всегда представляет форму Create страницы»

echo CHtml::button('submit',array('submit' => 'Create')); 

В качестве официального документа Yii говорит:

представляет: строка определяет URL, чтобы представить. Если текущий элемент имеет родительскую форму, эта форма будет отправлена, и если «submit» не является пустым, его значение заменит URL формы. Если нет родительской формы, вместо этого будут представлены данные, перечисленные в «params» (через метод POST), по URL в 'submit' или cu запрошен URL, если «submit» пуст.

Итак, вам необходимо его изменить. С другой стороны, вы должны создать URL-адреса стиля Yii. Например ctrl/action должно быть написано, как показано ниже:

Yii::app()->createUrl('ctrl/action'); 

Он также предложил использовать CHtml создать форму, как показано ниже:

echo CHtml::beginForm('action', 'post', array('id'=>'commentForm')); 
    echo CHtml::textField('comment', '', array('style'=>'height: 25px; width: 164px; margin: 5px 0;')); 
    echo CHtml::submitButton('Submit'); 
    echo CHtml::endForm(); 

Еще одно важное замечание, что вы работаете с ActiveRecord, когда вы пытаетесь для сохранения записи в базу данных. Таким образом, вы должны использовать ActiveForm вместо или изменить свои имена, например ModelName[AttributeName]

Смежные вопросы