Yii Framework Forum: CGridView на русском - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

CGridView на русском надписи CGridView на русском языке Rate Topic: -----

#1 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 24 January 2012 - 08:30 AM

Здравствуйте !

CGridView выводит надпись типа:

Displaying 1-5 of 5 result(s).

как ее сделать на русском языке.

Спасибо!
0

#2 User is offline   andy_s 

  • Random Member Title
  • Yii
  • Group: Moderators
  • Posts: 1,375
  • Joined: 22-June 09
  • Location:Russia, Kostroma

Posted 24 January 2012 - 08:37 AM

В protected/config/main.php добавляем:

'sourceLanguage'=>'ru',


и теперь на русском не только грид, но и все сообщения фреймворка :)
0

#3 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 24 January 2012 - 09:58 AM

Ух ты, класс!

Спасибо огромное!
0

#4 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 25 January 2012 - 02:24 AM

А можно еще вопросики:
1) как-то изменять ширину колонок, например колонка '№' - 50, а колонка 'name' - 350 - ну что-то вроде того.
2) изменить оформление содержимого (например выводит дату - переносит типа так
2012-01-
25
к примеру добавить что-то вроде <nobr> и вообще какие-то теги, оформление в ячейку и т.п.

Спасибо!
0

#5 User is offline   andy_s 

  • Random Member Title
  • Yii
  • Group: Moderators
  • Posts: 1,375
  • Joined: 22-June 09
  • Location:Russia, Kostroma

Posted 25 January 2012 - 02:55 AM

Вот небольшой пример:

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'order-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'rowCssClassExpression'=>'$data->status == Order::STATUS_DONE ? "order-grid-row-done" : "order-grid-row-pending"',
    'columns'=>array(
        array(
            'name'=>'order_id',
            'htmlOptions'=>array('style'=>'width: 50px; text-align: center;'),
        ),
        array(
            'name'=>'user_id',
            'htmlOptions'=>array('style'=>'width: 100px; text-align: center;'),
        ),
        array(
            'type'=>'raw',
            'name'=>'search_user',
            'value'=>'CHtml::link($data->user->full_name, array("/user/user/update", "id"=>$data->user->user_id))',
            'htmlOptions'=>array('style'=>'text-align: center;'),
        ),
        array(
            'name'=>'item_count',
            'htmlOptions'=>array('style'=>'width: 100px; text-align: center;'),
        ),
        array(
            'name'=>'price',
            'htmlOptions'=>array('style'=>'width: 100px; text-align: center;'),
        ),
        array(
            'name'=>'status',
            'value'=>'$data->getStatusLabel()',
            'filter'=>$model->statusLabels(),
            'htmlOptions'=>array('style'=>'text-align: center;'),
        ),
        array(
            'name'=>'date',
            'htmlOptions'=>array('style'=>'width: 130px; text-align: center;'),
        ),
        array(
            'class'=>'CButtonColumn',
            'template'=>'{view} {delete}',
            'htmlOptions'=>array('style'=>'width: 75px;'),
            'buttons'=>array(
                'view'=>array(
                    'label'=>'Просмотр корзины',
                    'url'=>'url("/cart/order/view", array("id"=>$data->order_id))',
                    'imageUrl'=>url().'/images/cart.png',
                    'options'=>array(
                        'ajax'=>array(
                            'type'=>'GET',
                            'url'=>"js:$(this).attr('href')",
                            'success'=>'js:function(data){$("#dlg-cart-content").html(data); $("#dlg-cart").dialog("open");}',
                        ),
                    ),
                ),
            ),
        ),
    ),
));
?>


А вот небольшая документация: http://www.yiiframew...i/1.1/CGridView :))
0

#6 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 25 January 2012 - 03:06 AM

Quote

А вот небольшая документация: http://www.yiiframew...i/1.1/CGridView

Так вроде смотрел, (точнее эти страницы и не закрываю никогда), вроде и расписано много, но все равно все нюансы понятны тому, кто уже знает, а кто только изучает, тому понятнее на таких примерах:

Quote

Вот небольшой пример:

Просто ОГРОМНОЕ спасибо!
0

#7 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 08 February 2012 - 07:18 AM

Можно еще один вопрос?
несколько значений в гриде выглядят так
 array(
    'name'=>'owner',
    'value'=>'$data->getOwnerName($data->owner)',
	'headerHtmlOptions'=>array('class'=>'myhead2'),
 ),
 array(
    'name'=>'dep_head',
    'value'=>'$data->getDepHead($data->owner)',
	'headerHtmlOptions'=>array('class'=>'myhead2'),
 ),

функция getOwner - берет номер работника (число из поля owner) и выводит фамилию
функция getDepHead - берет в базе номер работника и по нему из другой базы определяет начальника отдела (фамилию).
все хорошо, в гриде пишет что нужно.

Поиск реализован функцией search - создано автоматически при помощи gii как стандартный crud.
В поиске в форме сделано так:

echo $form->label($model,'owner'); 
echo $form->dropDownList($model, 'owner', $model->getOwnersList());

echo $form->label($model,'dep_head');
echo $form->dropDownList($model, 'dep_head', $model->getOwnersList());

getOwnersList - возвращает список всех работников, он общий.
При выборе owner - делает отбор, но поле owner как раз есть в базе
Как сделать, чтобы отбиралось по dep_head - в гриде оно есть, в базе нет?

Спасибо!
0

#8 User is offline   andy_s 

  • Random Member Title
  • Yii
  • Group: Moderators
  • Posts: 1,375
  • Joined: 22-June 09
  • Location:Russia, Kostroma

Posted 08 February 2012 - 07:43 AM

Нужно завести в классе модели поле dep_head, сделать его "safe" для сценария "search", а в методе search() уже добавлять условия (join, with и т.п.) в зависимости от значения $this->dep_head.
0

#9 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 08 February 2012 - 09:16 AM

View Postandy_s, on 08 February 2012 - 07:43 AM, said:

Нужно завести в классе модели поле dep_head, сделать его "safe" для сценария "search", а в методе search() уже добавлять условия (join, with и т.п.) в зависимости от значения $this->dep_head.

Сделал так:
class CmrClients extends CActiveRecord
{
	public $dep_head;
	public function rules()
	{
		return array(
...
			array('dep_head', 'safe', 'on'=>'search'),
		);
	}

	public function search($id=0)
	{
...
		$criteria->compare('dep_head',1);
Решил проверить и поставил фиксированное значение 1 - руководитель.
Выдает:
CDbException
CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[42S22]: Column not found: 1054 
Unknown column 'dep_head' in 'where clause'. The SQL statement executed was: 
SELECT COUNT(*) FROM `cmr_clients` `t` WHERE dep_head=:ycp0

т.е. он все равно dep_head как поле в таблице ищет.
как правильно сделать, подскажите, что-то непонятно...
0

#10 User is offline   andy_s 

  • Random Member Title
  • Yii
  • Group: Moderators
  • Posts: 1,375
  • Joined: 22-June 09
  • Location:Russia, Kostroma

Posted 08 February 2012 - 09:28 AM

Внутри search() нужно делать join таблиц или использовать with, если у вас прописаны связи в relations():

        public function search($id=0)
        {
            $criteria->with = array('otdel.nachalnik');
            $criteria->compare('nachalnik.name', 1);

Я названий и структуры таблиц не знаю, поэтому написал так, как написал :)
0

#11 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 09 February 2012 - 09:46 AM

View Postandy_s, on 08 February 2012 - 09:28 AM, said:

Внутри search() нужно делать join таблиц или использовать with, если у вас прописаны связи в relations():

        public function search($id=0)
        {
            $criteria->with = array('otdel.nachalnik');
            $criteria->compare('nachalnik.name', 1);

Я названий и структуры таблиц не знаю, поэтому написал так, как написал :)

собственно понял, хотя реализовал только теперь то, что нужно. Разбил на несколько коротких запросов.
Зато теперь понял, как оно делается :) Не так страшно, как сразу казалось.
Проблема была в том, что в кондишине я указывал название поля dep_head, которого нет, а нужно было сравнивать с переменной $this->dep_head, которую я объявил. а в качестве поля - то, которое существует, т.к. оно идет в sql запрос.

Спасибо ОГРОМНОЕ-ПРЕОГРОМНОЕ !!!
0

#12 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 13 February 2012 - 07:07 AM

View Postandy_s, on 24 January 2012 - 08:37 AM, said:

В protected/config/main.php добавляем:

'sourceLanguage'=>'ru',


и теперь на русском не только грид, но и все сообщения фреймворка :)

Для одной формы понадобилось, чтобы все было в кодировке cp-1251, как тогда быть?
пробовал добавлять 'charset' => 'Windows-1251', в конфиг - да, все ок, страница в кодировке 1251, но сообщения в том же CGrid-e в 'кракозябликах'
(Элементы 1—25 РёР· 475) типа такого
Что сделать?
Спасибо!
0

#13 User is offline   andy_s 

  • Random Member Title
  • Yii
  • Group: Moderators
  • Posts: 1,375
  • Joined: 22-June 09
  • Location:Russia, Kostroma

Posted 13 February 2012 - 07:44 AM

View Postkolossus, on 13 February 2012 - 07:07 AM, said:

Для одной формы понадобилось, чтобы все было в кодировке cp-1251, как тогда быть?
пробовал добавлять 'charset' => 'Windows-1251', в конфиг - да, все ок, страница в кодировке 1251, но сообщения в том же CGrid-e в 'кракозябликах'
(Элементы 1—25 РёР· 475) типа такого
Что сделать?
Спасибо!

Файлы с переводами в кодировке utf8, вот и думайте, а надо ли вам оно менять их :)
0

#14 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 13 February 2012 - 08:21 AM

View Postandy_s, on 13 February 2012 - 07:44 AM, said:

Файлы с переводами в кодировке utf8, вот и думайте, а надо ли вам оно менять их :)

оно, конечно, не надо...
тогда вопрос по-другому:

есть база в кодировке cp-1251 (и это изменить нельзя), как ее приделать к CGrid-у (или скорее к yii), чтобы выводило на экран в utf-8, а база была в cp-1251?
где-то так...
0

#15 User is offline   mat.twg 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 28-September 11

Posted 13 February 2012 - 08:36 AM

Multibyte String
0

#16 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 13 February 2012 - 08:40 AM

View Postmat.twg, on 13 February 2012 - 08:36 AM, said:


чуточку смешно :)
не что такое uft-8 или что такое кодировка или т.п.
вопрос как сделать, чтобы yii на ходу менял кодировку при работе с базой
0

#17 User is offline   andy_s 

  • Random Member Title
  • Yii
  • Group: Moderators
  • Posts: 1,375
  • Joined: 22-June 09
  • Location:Russia, Kostroma

Posted 13 February 2012 - 11:07 AM

Попробуйте начать с установки http://www.yiiframew...#charset-detail
0

#18 User is offline   mat.twg 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 28-September 11

Posted 13 February 2012 - 07:41 PM

View Postkolossus, on 13 February 2012 - 08:40 AM, said:

чуточку смешно :)
не что такое uft-8 или что такое кодировка или т.п.
вопрос как сделать, чтобы yii на ходу менял кодировку при работе с базой


А что тут смешного? Это была наводка куда смотреть... вот мой пример, только каждую колонку руками нужно настривать...

'columns'=>array(

       array(
	    'type'=>'raw',
            'name'=>'alias',
            'value'=>'mb_convert_encoding($data->alias, "UTF-8", "UCS-2")',
	),
..........................


Конечно, способ расточительный... но это для примера.
0

#19 User is offline   kolossus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 10-January 12

Posted 14 February 2012 - 02:10 AM

View Postmat.twg, on 13 February 2012 - 07:41 PM, said:

А что тут смешного? Это была наводка куда смотреть... вот мой пример, только каждую колонку руками нужно настривать...

'columns'=>array(

       array(
	    'type'=>'raw',
            'name'=>'alias',
            'value'=>'mb_convert_encoding($data->alias, "UTF-8", "UCS-2")',
	),
..........................


Конечно, способ расточительный... но это для примера.

спасибо, такой способ в принципе не нужен.
и я же сказал вопрос не в том, как конвертируются кодировки,
вопрос в том, чтобы "на лету" преобразовывалась кодировка, без моего участия
вполне возможно, чтобы база была в cp-1251, а отдавалось все в utf-8, и все это прозрачно для кода
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users