coldsplash
(Manoj Mani Nair)
1
Hi,
I’m pretty new to Yii, so this might be a silly question. I must be missing something somewhere. Plz help me out.
I have just written a simple code while I’m learning Yii.
I have a user controller which has an action that looks like this:
public function actionGetUsername($userId)
{
$user = Users::model()->findByPK($userId);
$username = $user->username;
$this->render('index', array('username'=>$username));
}
Now I have enabled SEO friendly URLs and echo statement in the view file to display the returned username.
But when I go to the URL, sitename/user/getusername/1
I get error 400 - your request is invalid.
Plz let me know if I am missing something here.
kiran123
(Sharmakiran71)
2
Hi ,
You can try like ,
pass URL like : sitename/user/getusername&id=1
public function actionGetUsername()
{
$userId = $_REQUEST['id'];
$user = Users::model()->findByPK($userId);
$username = $user->username;
$this->render('index', array('username'=>$username));
}
it will work.
kiran123
(Sharmakiran71)
3
Hi ,
You can try like ,
pass URL like : sitename/user/getusername&id=1
public function actionGetUsername()
{
$userId = $_REQUEST['id'];
$user = Users::model()->findByPK($userId);
$username = $user->username;
$this->render('index', array('username'=>$username));
}
it will work.
coldsplash
(Manoj Mani Nair)
4
Hi,
Thanks for that. But I would like the SEO friendly URLs to work.
There must be some workaround to this right?
I was also trying to write a function to display user info when the path has the username, like:
sitename/user/username
That is why I need to get that parameter value without using &username=somename
Do I have to do anything with the URL rules?
Plz let me know
phtamas
(Phtamas)
5
Parameter names in action methods must match the parameter names in the corresponding urlManager rule.
For
public function actionGetUsername($userId)
you should have something like
/<userId:\d+>
in the rule.
guide - action parameter binding
nguyendh
(Duynguyen0511)
6
Did you add the getUsername to accessRules() in the controller ?
public function accessRules()
{
return array(
array('allow',
'actions=>array('index', 'view', 'getUsername'),
'users'=>array('*'),
..............
}
Also, have a look @ http://www.yiiframework.com/doc/guide/1.1/en/topics.url
It talks about URL management in Yii