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);
}
...
}