Cakephp-Change default URL - cakephp-2.0

I use cakephp 2.0
My default URL website:
abc.com
I want: when i type url "abc.com", the browser 'll redirect automatically to
abc.com/eng
Thanks your help!

Add or edit of app/Config/routes.php file
Router::connect('/', array('controller' => 'YourController', 'action' => 'YourAction'));
Thanks

Related

Rewrite url in CakePhp

I'm new to Cakephp.
I have a home page with a lot of links like /mark-james.hmtl.../steve-pain.html, etc.
I want to display the personal page after the user clicks on the name, how can rewrite that?
Obviously now I have: Error: mark-james.hmtlController could not be found.
Router::connect(
'/user1-home-page',
array('controller' => 'users', 'action' => 'user1')
);
http://book.cakephp.org/2.0/en/development/routing.html
You can define routing as mentioned above.

How we can create a hyperlink in default.ctp, Am I create an other controller to redirect it or somthing else?

So please help me in this issue, how to give hyperlink in cakephp and my rout file is as following:
Router::connect('/', array('controller' => 'home', 'action' => 'home', 'display'));
Router::connect('View/pages/*', array('controller' => 'admin_login', 'action' =>'admin_login', 'home'));
my hyperlink is in default.ctp is :
href=admin_login.php
Is there something different from this
Use this one
echo $this->Html->link('Click', '/page/home');
if you want to use .html then add this line into routes.php
Router::parseExtensions('html');

Cakephp route and prefix

I have a problem with Routes in CakePHP. Let me explain.
I'm using authentication through the Auth component. I have a routing prefix called account.
When I want to edit a user, I'm calling the users controller which gives me a URL like:
/account/users/edit/5
What I want is to have a URL like:
/account/edit/5
So I changed my router like this:
Router::connect('/:prefix/edit/:id',
array('controller' => 'users', 'action' => 'edit'),
array('pass' => array('id'), 'id' => '[0-9]+')
);
which worked when I try to access /account/edit/5
My problem is located in my view. How can I access this route using the Html->link helper?
So far, I'm just doing it like this:
'/'.$this->Session->read('Auth.User.role').'/edit/'.$this->Session->read('Auth.User.id')
But it's not really clean in my opinion. I want to use the helper.
Thanks a lot for your help
Using a prefix "account" would mean needing an action like "account_edit" in your controller. That's probably not what you want. Also why put the "id" in url when it's already there in the session? Why not just use url "/account" for all users and get the id (and role if required) from session in the action?
Router::connect('/account',
array('controller' => 'users', 'action' => 'edit')
);
This would be the clean way to generate required url:
$this->Html->link('Account', array(
'controller' => 'users',
'action' => 'edit'
));
// Will return url "/account"
In general always use array form to specify url to benefit from reverse routing.
everything is just fine except router. it should be
Router::connect('/account/*',
array('controller' => 'users', 'action' => 'edit')
);
and creating anchor link in various way using Helper you can CHECK HERE

Cake PHP route controller/action to other controller/action

How can I make cakePHP go to ef_users/logout when I click the users/logout link?
Thanks in advance
EDIT
This doesn't seem to work
Router::connect('/users/:action/*', array('controller' => 'ef_users', 'action' => 'logout'));
A couple of options:
Make the link point to the correct place in the first place
Use routing: http://book.cakephp.org/view/945/Routes-Configuration
Redirect the user with $this->redirect( url ): http://book.cakephp.org/view/982/redirect
If in doubt, just use as precise route as possible and put it near the top of the list
Router::connect('/users/logout', array('controller' => 'ef_users', 'action' => 'logout'));
You might also consider using logoutRedirect which will still log the user out using the standard CakePHP logout function then redirect the user to your ef_users logout action.
$this->Auth->logoutRedirect = array('controller' => 'ef_users', 'action' => 'logout');
More information at: http://book.cakephp.org/view/1271/logoutRedirect

Routing configuration in cakephp

I am trying to implement routing in cakephp. I want the urls to mapped like this...
www.example.com/nodes/main -> www.example.com/main
www.example.com/nodes/about -> www.example.com/about
So for this I wrote in my config/routes.php file..
Router::connect('/:action', array('controller' => 'nodes'));
Now, I got the thing going but when I click on the links, the url in browser appears like
www.example.com/nodes/main
www.example.com/nodes/about
Is there some way where I can get the urls to appear the way they are routed?
Setting in .htaccess or httpd.conf would be easy - but I don't have access to that.
Regards
Vikram
This should work:
Router::connect('/main', array('controller' => 'nodes', 'action' => 'main'));
Router::connect('/about', array('controller' => 'nodes', 'action' => 'about'));
You may also do something more powerful, like this:
$actions = array('main','about');
foreach ($actions as $action){
Router::connect('/$action', array('controller' => 'nodes', 'action' => '$action'));
}
Basically if your links are created with Html helper, with the following format:
<?php echo $this->Html->link('your link', array('controller'=>'nodes', 'action'=>'main'));?>
Then the Cake will convert the links properly to www.example.com/main
But if your links are
<?php echo $this->Html->link('your link', '/nodes/main/');?>
they will point to www.example.com/nodes/main

Resources