2016-06-02 4 views
0

Я новичок. Я использую рейтинги CakeDC, чтобы сделать рейтинг на моем сайте. Мне удалось заставить его работать, но он показывает выбор радио.Cakephp пятизвездочный рейтинг используя CakeDC плагин

И покажите мне ошибку:

Undefined variable: item

и после нажатия кнопки "Оценить", изменения URL-адреса в Avis/записи/просмотр/перенаправление: 1

probleme

загрузить плагин и я разархивирую в C:\wamp\www\avis\app\Plugin после того, как напишу CakePlugin::load('Ratings') в app/Config/bootstrap.php моя база данных

CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`title` varchar(100) NOT NULL, 
PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; 


    CREATE TABLE IF NOT EXISTS `ratings` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `user_id` char(36) NOT NULL DEFAULT '', 
    `foreign_key` char(36) NOT NULL DEFAULT '', 
    `model` varchar(100) NOT NULL DEFAULT '', 
    `value` float NOT NULL, 
    `created` datetime DEFAULT NULL, 
    `modified` datetime DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `rating` (`user_id`,`model`,`foreign_key`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

в пост Модель

 public $hasMany = array(
     'Rating' => array(
     'className' => 'Rating', 
     'foreignKey' => 'foreign_key', 
     'dependent' => false, 

     ) 
    ); 

в PostController

public $components = array('Paginator', 'Flash', 'Session','Ratings.Ratings'); 
      public $actsAs = array('Ratings.Ratable'); 

      public function index() { 
    $this->Post->recursive = 0; 
    $this->set('posts', $this->Paginator->paginate()); 
} 

public function view($id = null) { 
    if (!$this->Post->exists($id)) { 
     throw new NotFoundException(__('Invalid post')); 
    } 
    $options = array('conditions' => array('Post.' . $this->Post->primaryKey => $id)); 
    $this->set('post', $this->Post->find('first', $options)); 
} 

ввиду

<h2><?php echo __('Post'); ?></h2> 
<dl> 
    <dt><?php echo __('Id'); ?></dt> 
    <dd> 
     <?php echo h($post['Post']['id']); ?> 
     &nbsp; 
    </dd> 
    <dt><?php echo __('Title'); ?></dt> 
    <dd> 
     <?php echo h($post['Post']['title']); ?> 
     &nbsp; 
    </dd> 
    <?php 
echo $this->Rating->display(array(
    'item' => $post['Post']['id'], 
'type' => 'radio', 
'stars' => 5, 
'value' => $item['rating'], 
'createForm' => array(
    'url' => array(
     $this->passedArgs, 'rate' => $item['id'], 
     'redirect' => true 
    ) 
) 
)); 
    ?> 
    </dl> 
</div> 

<script> 
      $('#ratingform').stars({ 
     split:2, 
      cancelShow:false, 
     callback: function(ui, type, value) { 
    ui.$form.submit(); 
    } 
    }); 
    </script> 

ответ

0
  1. Первый Скачать Jquery Raty Js плагин От: https://github.com/wbotelhos/raty
  2. Включите JS, CSS в ваш взгляд

    <div class="jrating" data-score="5"></div>
    <script> $('.jrating').raty({ score: function() {return $(this).attr('data-score');} });
    </script>

    Это создаст скрытое текстовое поле при проводке формы

    На контроллере: $ рейтинга = $ this-> данные [ 'оценки' ]; Теперь вы можете сохранить рейтинг в своем столе

+0

thx Я собираюсь попробовать, если у меня есть проблема, я скажу u – babyface