Intereting Posts
Получение пользователей Реальный IP-адрес с использованием PHP Как отправить данные с помощью jQuery Пользовательская проверка в PHP Codeigniter – требуется одно из двух полей Использование Facebook PHP-SDK 3.x для регистрации / входа пользователя с помощью Codeigniter 2.1.0 Доктрина: обновление дискриминатора для SINGLE_TABLE Наследование Laravel SQLite whereHas запросы не работают Можно ли это сделать в запросе MySQL, или это нужно сделать в PHP? (серверный) Перевести функцию класса на лямбда-функцию Файловые_файлы PHP кэшируют код статуса 301? Проблемы с отображением загруженных изображений в Symfony 2 Связывание параметров для инструкции PDO внутри цикла regex (в PHP), чтобы соответствовать &, которые не являются объектами HTML Форма отправляет массив вместо требуемого поля в CakePHP Ошибка: mysqli :: real_connect (): (08004/1040): Слишком много соединений Как извлечь n число цифр в разных формах (разделенных пробелом) – PHP

Как получить полный текущий URL для CakePHP

Как вы эхо отзываете текущий URL в представлении Cake?

Вы можете сделать

Из файла вида:

<?php echo $this->here; ?> 

Который даст вам абсолютный url от имени хоста ie / controller / action / params

Или

 <?php echo Router::url( $this->here, true ); ?> 

который должен предоставить вам полный URL-адрес с именем хоста.

Я предпочитаю это, потому что, если я не упоминаю слово «запрос», моя IDE дает предупреждение.

 <?php echo $this->request->here; ?> 

Документ API: class-CakeRequest


Изменить: Чтобы прояснить все параметры

 Current URL: http://example.com/en/controller/action/?query=12 // Router::url(null, true) http://example.com/en/controller/action/ // Router::url(null, false) /en/controller/action/ // $this->request->here /en/controller/action/ // $this->request->here() /en/controller/action/?query=12 // $this->request->here(false) /en/controller/action/?query=12 // $this->request->url en/controller/action // $_SERVER["REQUEST_URI"] /en/controller/action/?query=12 // strtok($_SERVER["REQUEST_URI"],'?'); /en/controller/action/ 
 <?php echo $_SERVER[ 'REQUEST_URI' ]; ?> 

Редактор,

 <?php echo $this->Html->url( null, true ); ?> 

Следующий способ «Торт» полезен, потому что вы можете захватить полный текущий URL-адрес и изменить его части, без необходимости вручную разбирать строку $_SERVER[ 'REQUEST_URI' ] а затем вручную конкатенировать ее обратно в действительный URL-адрес для вывода.

Полный текущий URL:
Router::reverse($this->request, true)

Легко модифицировать определенные части текущего URL:
1) сделать копию объекта запроса Cake: $request_copy = $this->request

2) Затем измените $request_copy->params и / или $request_copy->query массивы $request_copy->query

3) Наконец: $new_url = Router::reverse($request_copy, true) .

Я знаю, что этот пост немного устарел, и версии CakePHP процветали с тех пор. В текущей версии (2.1.x) CakePHP и даже в 1.3.x, если я не ошибаюсь, можно получить текущий URL-адрес контроллера / просмотра следующим образом:

 $this->params['url']; 

Хотя этот метод НЕ возвращает параметры, это удобно, если вы хотите добавлять параметры к ссылке при создании новых URL-адресов. Например, у нас есть текущий URL:

проекты / редактировать / 6

И мы хотим добавить действие настраиваемого параметра c_action со значением remove_image, можно использовать $this->params['url]; и объединить его с массивом пар параметров: key => value:

 echo $this->Html->link('remove image', array_merge($this->params['url'], array('c_action' => 'remove_image')); 

Используя вышеописанный метод, мы можем добавить наши пользовательские параметры к ссылке, а не вызывать длинную цепочку параметров для создания URL-адреса, потому что $ this-> params ['url] только когда-либо возвращает URL-адрес элемента управления.

В приведенном выше примере нам нужно вручную добавить идентификатор 6 обратно в URL-адрес, так что окончательная компоновка ссылок будет выглядеть следующим образом:

 echo $this->Html->link('remove image', array_merge($this->params['url'], array($id,'c_action' => 'remove_image')); 

Где $ is – это идентификатор проекта, и вы назначили его переменной $ id на уровне контроллера . Новый URL-адрес будет следующим:

проекты / редактировать / 6 / c_action: remove_image

Извините, если это нисколько не связано, но я столкнулся с этим вопросом при поиске метода для достижения вышеуказанного и думал, что другие могут извлечь из этого выгоду.

для CakePHP 3:

 $this->Url->build(null, true) // full URL with hostname $this->Url->build(null) // /controller/action/params 

Получение текущего URL-адреса для CakePHP 3.x?

В вашем макете:

 <?php $here = $this->request->here(); $canonical = $this->Url->build($here, true); ?> 

Вы получите полный URL-адрес текущей страницы, включая параметры строки запроса.

например http: //website.example/controller/action? param = value

Вы можете использовать его в метатеге canonical, если вам нужно сделать некоторые SEO.

 <link rel="canonical" href="<?= $canonical; ?>"> 

Получение текущего URL-адреса довольно прямо в вашем файле просмотра

 echo Router::url($this->here, true); 

Это вернет полный URL-адрес http://www.example.com/subpath/subpath

Если вам нужен только относительный путь, используйте следующие

 echo $this->here; 

ИЛИ

В идеале Router :: url ("", true) должен возвращать абсолютный URL текущего представления, но он всегда возвращает относительный URL. Таким образом, взломать абсолютный URL-адрес

 $absolute_url = FULL_BASE_URL + Router::url(“”, false); 

Чтобы проверить FULL_BASE_URL здесь

В объекте запроса у вас есть все, что вам нужно. Чтобы понять это:

 debug($this->request->url); 

и в вашем случае

 $here = $this->request->url; 

Cakephp 3.5:

 echo $this->Url->build($this->request->getRequestTarget()); 

Вызов $ this-> request-> здесь () устарел с 3.4 и будет удален в 4.0.0. Вместо этого вы должны использовать getRequestTarget ().

Путь Cake для 1.3 – использовать Router :: reverse:

Ссылка на документацию

 $url = Router::reverse($this->params) echo $url; 

доходность

 /Full/Path/From/Root/MyController/MyAction/passed1/named_param:bob/?param1=true&param2=27 

для cakephp3 +:

 $url = $this->request->scheme().'://'.$this->request->domain().$this->request->here(false); 

получит, например: http://bgq.dev/home/index?t44=333

Я использую $this->here для пути, чтобы получить весь URL, который вам нужно будет сделать, как сказал Юхана, и использовать переменные $_SERVER . Для этого нет необходимости использовать функцию Cake.

Все ранее предложенные подходы не удовлетворяли моим требованиям для получения полного URL-адреса (как в квалифицированном), например, для использования в отправке по электронной почте из действия контроллера. Мне также нужна схема и имя хоста, и, таким образом, наткнулся на следующий подход:

 <?php echo Router::url( array( $id ), true ) ?> 

Из-за того, что маршрутизатор поддерживает контроллер тока, и действие сохраняется, однако идентификатор отсутствует и, следовательно, здесь должен быть предоставлен. Второй аргумент true – это запрос на добавление имени хоста и т. Д. Для получения полного URL-адреса.

Использование Router :: url () доступно в любой ситуации и, следовательно, может использоваться и в файлах просмотра.

Да, это просто ПОЛНЫЙ URL-адрес в разделе «Управление» в CakePHP 1.3>

 <?php echo Router::url( array('controller'=>$this->params['controller'],'action'=>$this->params['action']), true ); 

Saludos

Cakephp 3.x в любом месте:

 Router::reverse(Router::getRequest(),true) 

для CakePHP 3.x Вы можете использовать UrlHelper :

 $this->Url->build(null, true) // output http://somedomain.com/app-name/controller/action/params $this->Url->build() // output /controller/action/params 

Или вы можете использовать PaginatorHelper (в случае, если вы хотите использовать его в javascript или …):

 $this->Paginator->generateUrl() // returns a full pagination URL without hostname $this->Paginator->generateUrl([],null,true) // returns a full pagination URL with hostname 

Использовать помощник Html

 <?php echo $this->Html->url($this->here, true); ?> 

Он создаст полный URL-адрес, который начинается с http или https

Ввиду:

 Blank URL: <?php echo $this->Html->Url('/') ?> Blank Full Url: <?php echo $this->Html->Url('/', true) ?> Current URL: <?php echo $this->Html->Url($this->here) ?> Current Full URL: <?php echo $this->Html->Url($this->here, true) ?> 

В контроллере

 Blank URL: <?php echo Router::url('/') ?> Blank Full Url: <?php echo Router::url('/', true) ?> Current URL: <?php echo Router::url($this->request->here()) ?> Current Full URL: <?php echo Router::url($this->request->here(), true) ?> 

Чтобы получить полный URL без параметров:

 echo $this->Html->url('/', true); 

вернет http(s)://(www.)your-domain.com