sjaakp/ yii2-linktitles
在 Yii 2.0 PHP 框架中提取链接标题
Requires
- yiisoft/yii2: *
README
LinkTitles 是一个 Yii 2.0 小部件,用于为相对链接添加标题。当鼠标悬停在链接上时,标题将在工具箱窗口中弹出。标题通过 JSON 调用来从网站获取。如果链接已经有一个标题,则它将保持不变,不会被 LinkTitles 覆盖。
LinkTitles 的演示在这里 点击查看。
安装
使用 Composer 以常规方式安装 yii2-linktitles。将以下内容添加到您的 composer.json 文件的 require 部分
"sjaakp/yii2-linktitles": "*"
或者运行
composer require sjaakp/yii2-linktitles
您可以通过 下载 ZIP 格式的源代码 手动安装 yii2-linktitles。
先决条件
为了使 LinkTitles 正常工作,需要在网站的主要配置文件中的 urlManager 组件上进行一些设置,通常称为 web.php 或 main.php,位于 config 目录中
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<c:[\w\-]+>/<id:\d+>' => '<c>/view',
// other rules ...
],
// ...
许多 Yii 2 网站已经有了这些设置。
使用 LinkTitles 小部件
在 Yii2 视图文件中使用 LinkTitles 小部件可能像这样简单
<?php
use sjaakp\linktitles\LinkTitles;
?>
...
<?php LinkTitles::begin() ?>
<p>Some HTML containing several relative links... </p>
<?php LinkTitles::end() ?>
...
begin() 和 end() 之间的 HTML 可以是您想要的任何复杂性。
在加载视图时,LinkTitles 会尝试通过修改后的 href 使用 JSON 调用来检索所有相对链接的标题。如果链接的 href 是 /message/42,则 LinkTitles 会调用 /message/link-title/42。网站应返回 JSON 格式的标题,如下所示
{ "title": "The title of Message 42" }
完成此操作的一种方法是通过使用 LinkTitleAction 向控制器添加一个名为 link-title 的操作,如下所示
<?php
use sjaakp\linktitles\LinkTitleAction;
use yii\web\Controller;
use app\models\Message;
class MessageController extends Controller
{
...
public function actions()
{
return [
'link-title' => [
'class' => LinkTitleAction::class,
'model' => Message::class
]
];
}
...
}
?>
这假设模型(Message)有一个包含链接标题的属性 title。
如果链接标题保存在另一个属性中,例如 header,则将 LinkTitleAction 的 attribute 属性设置为它的名称,如下所示
public function actions()
{
return [
'link-title' => [
'class' => LinkTitleAction::class,
'model' => Message::class,
'attribute' => 'header'
]
];
}
您也可以按照这些路线编写一个自定义函数来处理 link-title 功能
<?php
class MessageController extends Controller
{
...
public function actionLinkTitle($id)
{
$model = Message::findOne($id);
if ($model) {
$title = <retrieve title from $model>
$r = [ 'title' => $title ];
}
else $r = [];
return $this->asJson($r);
}
...
}