CakePHP: использование библиотеки Tiny для создания постоянных ссылок - PullRequest
0 голосов
/ 13 июня 2011

У меня есть следующий метод представления контроллера для моих сообщений:

function view($id = null)
{
    $this->Portfolio->id = $id;
    $this->set('posts', $this->Portfolio->read());
}

Так что в настоящее время я передаю идентификатор для просмотра, и он показывает сообщение, например /portfolio/view/1

Однако я хочучтобы использовать Tiny Lib здесь: https://github.com/kylebragger/tiny/blob/master/tiny.php

для набора, который я использую 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

URL, который я хочу создать, например: driz.co.uk/portfolio/view/8az/Paperview_Magazine

Таким образом, в основном, в части 8az Tiny сравнивает значение с идентификатором в базе данных

Я создал тестовую ссылку, например, <?php echo $this->Html->link($post['Portfolio']['title'], array('controller' => 'portfolio', 'action' => 'view', Inflector::slug($post['Portfolio']['title'])), array('title' => $post['Portfolio']['title'])); ?>, но не добавил часть Tiny, но только отклонилpost title.

Я догадался, что это что-то вроде следующего, чтобы сделать это:

function view ( $tiny_id )  
{
    $id = $this->Tiny->reverseTiny($tiny_id);

    $post = $this->Portfolio->id = $id;

    $this->set('post', $this->Portfolio->read());
}

Но я застрял со следующим:

1.) Как добавить значение Tiny к моей ссылке, чтобы я мог передать его контроллеру / представлению, так как в данный момент я просто передаю переадресованный URL, а не идентификатор записи или крошечный идентификатор

2.) Какиспользуйте библиотеку в моем методе и поймите это правильно, чтобы показать правильный пост

Если кто-то может помочь мне с этим, это будет высоко оценено.Спасибо

1 Ответ

1 голос
/ 13 июня 2011

Во-первых, чтобы загрузить библиотеку Tiny в свой контроллер, вы должны будете использовать App :: import.Я бы посоветовал вам скопировать библиотеку Tiny в папку вашего поставщика и затем использовать следующее в действии вида:

App::import('Vendor', 'tiny');

Убедитесь, что файл с именем tiny.php находится в папке поставщиков или он выигралt work.

Чтобы создать ссылку, вы должны быть в состоянии использовать:

echo $this->Html->link($post['Portfolio']['title'], array('controller' => 'portfolio', 'action' => 'view', Tiny::toTiny($post['Portfolio']['id']), Inflector::slug($post['Portfolio']['title'])), array('title' => $post['Portfolio']['title']));

Чтобы прочитать сообщение, сделайте следующее:

$this->Postfolio->read(null, Tiny::reverseTiny($id));

Причинапочему я использую $ id в вызове reverseTiny, а не $ tiny_id, как вы опубликовали выше, потому что действие "view" ожидает, что первым параметром будет $ id (который является крошечным идентификатором). Второй параметр будетслаг, который вы функционируете, явно не объявляется.Вы можете изменить функцию на:

public function view($id, $slug) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...