Проблема подключения Smarty

Вопросы об установке, настройке и работе самого фреймворка

Проблема подключения Smarty

Сообщение andry » 2010.03.01, 19:15

Пытаюсь подключить шаблоннотизатор Smarty, сразу скажу, изначально я сделал поиск по форуму, но из всего что там было описано про смарти, разобраться не смог, поэтому решил создать отдельный вопрос

Что я сделал:

скачал файл CSmartyViewRenderer.php
http://code.google.com/p/yiiext/source/ ... nderer.php
поместил его в директорию protected/extensions/Smarty/

скачал последнюю стабильную версию Smarty 2.6.26
http://www.smarty.net/do_download.php?d ... 2.6.26.zip
поместил в директорию protected/vendors/Smarty/
замечу, всё что находилось в Smarty/libs/ я перенёс в Smarty/

далее как описывалось в инструкции
http://www.yiiframework.com/extension/s ... derer/#doc
вставил в конфиг такой код

Код: Выделить всё
        'viewRenderer'=>array(
            'class'=>'application.extensions.Smarty.CSmartyViewRenderer',
            'fileExtension' => '.tpl',
            //'pluginsDir' => 'application.smartyPlugins',
            //'configDir' => 'application.smartyConfig',
        ),
 


после этого создал шаблонный файл themes/classic/index.tpl
а в конфиге прописал

'theme' => 'classic',



имеется контролер controllers/SiteController.php

Код: Выделить всё

class SiteController extends CController
{
        public function actionIndex()
        {
                $this->render('index');
        }
}
 


при запуске как я понимаю должна генерироваться шаблон themes/classic/index.tpl но в место этого выводит ошибку


Код: Выделить всё

CException
Description

Property 
"CWebApplication.viewRenderer" is read only.
Source File

C
:wampwwwyii-1.1.0.r1700frameworkbaseCModule.php(435)

00423:         }
00424:     }
00425: 
00426
:     /**
00427:      * Configures the module with the specified configuration.
00428:      * @param array the configuration array
00429:      */
00430:     public function configure($config)
00431:     {
00432:         if(is_array($config))
00433:         {
00434:             foreach($config as $key=>$value)
00435: $this->$key=$value;
00436:         }
00437:     }
00438: 
00439
:     /**
00440:      * Loads static application components.
00441:      */
00442:     protected function preloadComponents()
00443:     {
00444:         foreach($this->preload as $id)
00445:             $this->getComponent($id);
00446:     }
00447: 

Stack Trace

#0 C:\wamp\www\yii-1.1.0.r1700\framework\base\CModule.php(435): CComponent->__set('viewRenderer', Array)
#1 C:\wamp\www\yii-1.1.0.r1700\framework\base\CApplication.php(117): CModule->configure(Array)
#2 C:\wamp\www\yii-1.1.0.r1700\framework\YiiBase.php(112): CApplication->__construct('C:\wamp\www\mys...')
#3 C:\wamp\www\yii-1.1.0.r1700\framework\YiiBase.php(85): YiiBase::createApplication('CWebApplication', 'C:\wamp\www\mys...')
#4 C:\wamp\www\mysite\index.php(11): YiiBase::createWebApplication('C:\wamp\www\mys...')
#5 {main}

2010-03-01 16:04:16 Apache/2.2.11 (Win32) PHP/5.3.0 Yii Framework/1.1.0



ниже привожу свой конфиг

Код: Выделить всё

return array
(
        'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
        'name'=>'Yii Blog Demo',
        'defaultController'=>'site',

        'sourceLanguage' => 'ru',
        'language' => 'en',
        'theme' => 'classic',

        'import'=>array(
                'application.models.*',
                'application.components.*',
        ),

           /* */
        'viewRenderer'=>array(
            'class'=>'application.extensions.Smarty.CSmartyViewRenderer',
            'fileExtension' => '.tpl',
            //'pluginsDir' => 'application.smartyPlugins',
            //'configDir' => 'application.smartyConfig',
        ),


        'components'=>array(


                'errorHandler'=>array(
                        'errorAction'=>'site/error',
                ),
        
        
                
'urlManager'=>array(
                    'urlFormat'=>'path',
                    'showScriptName'=>false,
                    'rules'=>array(
                           'posts'=>'post/list',
                    ),
                ),
        ),

        // application-level parameters that can be accessed
        // using Yii::app()->params['paramName']
        'params'=>require(dirname(__FILE__).'/params.php'),
);
 



сразу извиняюсь что размещаю большие коды, хотя наверное было лучше приложить ввиде файла.

Подскажите, что я не так сделал, может что-то я упустил. Да и ещё непонятно где должна располагаться директория compile для компилировании шаблонов ?
andry
 
Сообщения: 100
Зарегистрирован: 2009.11.08, 16:52

Re: Проблема подключения Smarty

Сообщение Sam Dark » 2010.03.01, 20:14

'viewRenderer' — это компонент, поэтому прописывать его надо в 'components'.

Директория 'compile' будет в protected/runtime (создастся сама).
Аватара пользователя
Sam Dark
Администратор
 
Сообщения: 1693
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж

Re: Проблема подключения Smarty

Сообщение andry » 2010.03.01, 22:02

Sam Dark писал(а):'viewRenderer' — это компонент, поэтому прописывать его надо в 'components'.

Директория 'compile' будет в protected/runtime (создастся сама).



спасибо, если я правильно понял сделал так

в конфиге изменил
Код: Выделить всё

        
'viewRenderer'=>array(
            'class'=>'application.components.Smarty.CSmartyViewRenderer',
            'fileExtension' => '.tpl',
            //'pluginsDir' => 'application.smartyPlugins',
            //'configDir' => 'application.smartyConfig',
        ),
 


а файл CSmartyViewRenderer.php переместил от сюда
/protected/components/Smarty/
сюда
/protected/extensions/Smarty/

но результат тот же, таже самая ошибка появляется((

на всякий случай прикрепляю скрин ошибки
Изображение
Последний раз редактировалось andry 2010.03.01, 22:07, всего редактировалось 1 раз.
andry
 
Сообщения: 100
Зарегистрирован: 2009.11.08, 16:52

Re: Проблема подключения Smarty

Сообщение Sam Dark » 2010.03.01, 22:04

Нет, надо так:
Код: Выделить всё
return array(
        
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
        
'name'=>'Yii Blog Demo',
        
'defaultController'=>'site',

        
'sourceLanguage' => 'ru',
        
'language' => 'en',
        
'theme' => 'classic',

        
'import'=>array(
                
'application.models.*',
                
'application.components.*',
        ),

          


        
'components'=>array(
             
'viewRenderer'=>array(
                 
'class'=>'application.extensions.Smarty.CSmartyViewRenderer',
                 
'fileExtension' => '.tpl',
                 
//'pluginsDir' => 'application.smartyPlugins',
                 //'configDir' => 'application.smartyConfig',
            
),

                
'errorHandler'=>array(
                        
'errorAction'=>'site/error',
                ),
        
        
                
'urlManager'=>array(
                    
'urlFormat'=>'path',
                    
'showScriptName'=>false,
                    
'rules'=>array(
                           
'posts'=>'post/list',
                    ),
                ),
        ),

        
// application-level parameters that can be accessed
        // using Yii::app()->params['paramName']
        
'params'=>require(dirname(__FILE__).'/params.php'),
);
 
Аватара пользователя
Sam Dark
Администратор
 
Сообщения: 1693
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж

Re: Проблема подключения Smarty

Сообщение andry » 2010.03.01, 22:12

вау, теперь ясно, не туда оказывается вставил этот блок, спасибо большущее, теперь работает проверил:)
andry
 
Сообщения: 100
Зарегистрирован: 2009.11.08, 16:52

Re: Проблема подключения Smarty

Сообщение andry » 2010.03.02, 14:45

столкнулся с такой проблемой, не передаются значения переменных с метода $this->render()

пишу в контроллере

Код: Выделить всё

class SiteController extends CController
{

        public function actionIndex()
        {

                $this->render('index',array(
                                     'vartest'=>'123',
                                     'contact'=>array('11','22','33')
                              ));
        }

}
 


а в шаблоне index.tpl принимаю так {$vartest} ничего не передаётся, пустое значение. Или я не правильно передаю/принимаю?

ещё, в файле CSmartyViewRenderer.php есть такие две строчки

Код: Выделить всё

        $this
->smarty->assign("TIME",sprintf('%0.5f',Yii::getLogger()->getExecutionTime()));
        $this->smarty->assign("MEMORY",round(Yii::getLogger()->getMemoryUsage()/(1024*1024),2)." MB");
 


в шаблоне как я понимаю нужно принимать так {$TIME} но тоже выводит пустое значение
andry
 
Сообщения: 100
Зарегистрирован: 2009.11.08, 16:52

Re: Проблема подключения Smarty

Сообщение kosenka » 2010.03.02, 15:31

А зачем тебе смарти?
У меня сейчас два проекта (заверщенных) на CodeIgniter'e + Smarty(Quicky) и текущий проект на Yii + шаблоны с php.
Когда только начинал делать проект на Yii, то тоже думал использовать смарти, но потом решил попробовать без него, и ты знаешь, ничуть не жалею, что отказался от смарти. Мне кажется смарти, это лишняя "прослойка" (холиваров не хочу).
И я пока не сталкивался с чем-то таким, которое невозможно реализовать без смарти.
Аватара пользователя
kosenka
 
Сообщения: 195
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва

Re: Проблема подключения Smarty

Сообщение andry » 2010.03.02, 15:44

kosenka писал(а):А зачем тебе смарти?
У меня сейчас два проекта (заверщенных) на CodeIgniter'e + Smarty(Quicky) и текущий проект на Yii + шаблоны с php.
Когда только начинал делать проект на Yii, то тоже думал использовать смарти, но потом решил попробовать без него, и ты знаешь, ничуть не жалею, что отказался от смарти. Мне кажется смарти, это лишняя "прослойка" (холиваров не хочу).
И я пока не сталкивался с чем-то таким, которое невозможно реализовать без смарти.


да не спорю, и без смарти можно делать проекты. Но, он удобен намного больше, да и верстальщики среди тех с кем я сталкивался, их напрягает когда код php идёт с перемешкой html
зы: я бы не хотел обсуждать про это, ибо это и так много-страдальная тема, котороую обсуждали и обсуждают(на многих сайтах) до сих пор, но каждый использует то что ему больше нравится. Считаю это личное дело каждого. ;)
andry
 
Сообщения: 100
Зарегистрирован: 2009.11.08, 16:52

Re: Проблема подключения Smarty

Сообщение kosenka » 2010.03.02, 16:12

andry писал(а):
kosenka писал(а):А зачем тебе смарти?
У меня сейчас два проекта (заверщенных) на CodeIgniter'e + Smarty(Quicky) и текущий проект на Yii + шаблоны с php.
Когда только начинал делать проект на Yii, то тоже думал использовать смарти, но потом решил попробовать без него, и ты знаешь, ничуть не жалею, что отказался от смарти. Мне кажется смарти, это лишняя "прослойка" (холиваров не хочу).
И я пока не сталкивался с чем-то таким, которое невозможно реализовать без смарти.


да не спорю, и без смарти можно делать проекты. Но, он удобен намного больше, да и верстальщики среди тех с кем я сталкивался, их напрягает когда код php идёт с перемешкой html
зы: я бы не хотел обсуждать про это, ибо это и так много-страдальная тема, котороую обсуждали и обсуждают(на многих сайтах) до сих пор, но каждый использует то что ему больше нравится. Считаю это личное дело каждого. ;)


Да, согласен, что это личное дело каждого, но только учти, что могут быть некоторые проблемы: viewtopic.php?f=3&t=41
Аватара пользователя
kosenka
 
Сообщения: 195
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва

Re: Проблема подключения Smarty

Сообщение andry » 2010.03.02, 16:46

да проблемы они везде есть. Всё решается.
andry
 
Сообщения: 100
Зарегистрирован: 2009.11.08, 16:52

След.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Яндекс и гости: 2