现在Widget叫分层控制器了,很官方了,熟悉YII框架的朋友都习惯叫它小部件,我也是一直叫它小部件,它真的是非常好用的一个东西,今天就简单的分享一下它的使用方法吧。
Thinkphp3.2版本使用方法从这进入:http://www.dawnfly.cn/article-1-197.html
今天主要叫Thinkphp5版本的使用方法(首先说明模板文件后缀是.php,使用的原生php语法)。
先来看下我的使用场景吧。
三张图标注的左侧分类导航和面包屑其实是可以共用的,而且我们都不应该去写重复的代码来实现这么一个功能,那怎么办呢?实现方法也有很多,当然在Thinkphp框架中,我首先想到的便是通过Widget来实现了,3.2版本就用过,很好用,tp5中稍微调整过了,但影响不大。
首先在模块下(比如前台index)建立一个widget文件夹,然后在view下面建立一个widget文件夹。
新建控制器Widgets如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
namespace
app\index\widget;
use
think\Controller;
class
Widgets
extends
Controller
{
public
function
leftCategory()
{
return
$this
->fetch(
'widget/leftCategory'
);
//当然得有视图了
}
public
function
breadCrumbs()
{
return
$this
->fetch(
'widget/breadCrumbs'
);
}
}
|
视图模板leftCategory.php(左侧导航栏)如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<div
class
=
"left_title1"
><?php
echo
$parentName
?></div>
<div
class
=
"sub_left"
>
<div
class
=
"ny_zblb1"
>
<ul id=
"menu-%e6%96%b0%e9%97%bb"
class
=
"clearfix left_nav"
>
<?php
foreach
(
$currentCateList
as
$v
): ?>
<li id=
"menu-item-<?php echo $v['id'] ?> end"
class
=
"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-47 end"
><a
<?php
echo
$v
[
'enname'
] ==
$currentCateEnName
?
'style="background: url(/public/static/home/images/leftli1.jpg) 0 0px;color: #FFF; "'
:
''
?>
href=
"<?php echo url('@index/page/_list', 'enname=' . $v['enname']); ?>"
><?php
echo
$v
[
'name'
] ?></a>
</li><?php
endforeach
; ?>
</ul>
</div>
</div>
|
视图模板breadCrumbs.php(面包屑)如下:
1
2
3
4
5
6
|
<div
class
=
"right_title"
><span
class
=
"right_name"
><?php
echo
$currentCateName
?>
<font><?php
echo
$currentCateEnName
?></font></span>
<div
class
=
"fast"
><b>当前位置:</b>
<ul
class
=
"breadcrumbs"
><?php
echo
$currentBread
; ?></ul>
</div>
</div>
|
最后就是调用了,在需要的模板页面直接加载输出就行了。