Reputation: 4386
I'm working a Yii project passed down to me. As I'm very new to the thing, my first instinct was to do output a whole bunch of values to get a sense as to where things come from and where they go.
So to that end, I tried using echo
in the Controller. As in:
public function actionCallCommentForm($id='')
{
$topic=Forum::model()->findByPk($id);
echo '<script language="javascript">';
echo 'alert("message successfully sent")';
echo '</script>';
$this->renderPartial('_commentform', array(
'forum'=>$topic,
'model'=>new Comment,
'view'=>'view',
));
}
This, however, does not work. And I wouldn't know how to output, say, $topic
, anyway, if it did.
So I tried logging. Based on the answer to this question:
public function actionCallCommentForm($id='')
{
$topic=Forum::model()->findByPk($id);
Yii::trace(CVarDumper::dumpAsString("TESTING!"));
Yii::trace(CVarDumper::dumpAsString($topic));
$this->renderPartial('_commentform', array(
'forum'=>$topic,
'model'=>new Comment,
//'view'=>array('view','id'=>$id),
'view'=>'view',
));
}
Upon checking the logs though (which does work for outputting errors) in runtime/application.log
The answer says The Application Log is shown below in every page.
but I'm afraid that's not clear.
Any other ways to do this?
EDIT: More details:
main.php:
<?php
// load the helper functions - jim
require_once( dirname(__FILE__) . '/../components/Helpers.php');
// uncomment the following to define a path alias
// Yii::setPathOfAlias('local','path/to/local-folder');
// This is the main Web application configuration. Any writable
// CWebApplication properties can be configured here.
return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'name'=>'Star Connects',
// preloading 'log' component
'preload'=>array('log'),
// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
'application.modules.poll.models.*',
'application.modules.poll.components.*',
'ext.multimodelform.MultiModelForm',
'ext.mail.YiiMailMessage',
),
'aliases' => array(
'xupload' => 'ext.xupload'
),
'modules'=>array(
// uncomment the following to enable the Gii tool
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'manager1',
// If removed, Gii defaults to localhost only. Edit carefully to taste.
'ipFilters'=>array($_SERVER['REMOTE_ADDR'],'127.0.0.1','10.0.1.100'),
),
'poll' => array(
// Force users to vote before seeing results
'forceVote' => TRUE,
// Restrict anonymous votes by IP address,
// otherwise it's tied only to user_id
'ipRestrict' => TRUE,
// Allow guests to cancel their votes
// if ipRestrict is enabled
'allowGuestCancel' => FALSE,
),
/* 'message' => array(
'userModel' => 'User',
'getNameMethod' => 'getFullName',
'getSuggestMethod' => 'getSuggest',
), */
),
// application components
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
'class'=>'WebUser',
'loginRequiredAjaxResponse' => 'YII_LOGIN_REQUIRED',
),
'session'=> array(
'timeout'=> 1440
),
'partyroles'=>array(
// enable cookie-based authentication
'class'=>'WebUser',
),
// uncomment the following to enable URLs in path-format
/*
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
/*
'db'=>array(
'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
), */
// uncomment the following to use a MySQL database
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'index.php?r=site/login/<msg>'=>'site/login',
),
),
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=dbtest',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
//'tablePrefix' => 'tbl_',
),
'errorHandler'=>array(
// use 'site/error' action to display errors
'errorAction'=>'site/error',
),
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'error, warning',
),
// uncomment the following to show log messages on web pages
array(
'class' => 'CWebLogRoute',
'enabled' => YII_DEBUG,
'levels' => 'error, warning, trace, notice',
'categories' => 'application',
'showInFireBug' => true,
),
),
),
'mail' => array(
'class' => 'ext.mail.YiiMail',
'transportType' => 'smtp',
'transportOptions' => array(
'host' => '10.236.9.116',
'username' => '',
'password' => '',
#'port' => 0,
'encryption'=>'ssl'
),
'viewPath' => 'application.views.mail',
'logging' => true,
'dryRun' => false
)
),
// application-level parameters that can be accessed
// using Yii::app()->params['paramName']
'params'=>array(
// this is used in contact page
'adminEmail'=>'[email protected]',
),
);
index.php in project folder:
<?php
// change the following paths if necessary
$yii=dirname(__FILE__).'/../../yii-1.1.12/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
require_once($yii);
Yii::createWebApplication($config)->run();
Upvotes: 1
Views: 611
Reputation: 1981
Instead of Yii::trace()
, you can try to use Yii::log()
:
public function actionCallCommentForm($id='')
{
$topic=Forum::model()->findByPk($id);
Yii::log(CVarDumper::dumpAsString("TESTING!"));
Yii::log(CVarDumper::dumpAsString($topic));
$this->renderPartial('_commentform', array(
'forum'=>$topic,
'model'=>new Comment,
//'view'=>array('view','id'=>$id),
'view'=>'view',
));
}
My configuration for logging is:
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'info, error, warning', // info is necessary, if you want to use Yii::log() without second parameter
),
),
),
And it writes informations passed by Yii::log()
function to runtime/application.log
file.
EDIT:
in main.php
in returning array you need to have this code:
'preload'=>array('log'),
Without this configuration option, logging utility doesn't work.
EDIT 2:
When using Yii::log()
without second parameter, which determines level, default level is info
. In your main.php
config file there is no level info
, so please add it to levels
string in routes
array.
Upvotes: 1