很多站长朋友们都不太清楚phpgetpath,今天小编就来给大家整理phpgetpath,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 thinkphp框架怎么做一个三级菜单 2、 php模拟get和post的几种方法 3、 PHP 中函数get_include_path()是干什么得 4、 【PHP】laravel中获取当前路由名称 5、 PHP 如何把 网页文件中的相对路径替换成 绝对路径? thinkphp框架怎么做一个三级菜单thinkphp框架onethink后台支持三级菜单
onethink后台支持三级菜单,CMS管理后台1.0版本本身不支持三级菜单,稍加改动,即可支持无限级分类
/**
* 获取控制器菜单数组,二级菜单元素位于一级菜单的'_child'元素中
* @author 朱亚杰 <xcoolcc@gmail测试数据>
*/
final public function getMenus($controller=CONTROLLER_NAME){
// $menus = session('ADMIN_MENU_LIST'.$controller);
$flag=false;//是否开启menu三级菜单
if(empty($menus)){
// 获取主菜单
$where['pid'] = 0;
$where['hide'] = 0;
if(!C('DEVELOP_MODE')){ // 是否开发者模式
$where['is_dev'] = 0;
}
$menus['main'] = M('Menu')->where($where)->order('sort asc')->select();
$menus['child'] = array(); //设置子节点
//高亮主菜单
$current = M('Menu')->where("url like '%{$controller}/".ACTION_NAME."%'")->field('id')->find();
if($current){
$nav = D('Menu')->getPath($current['id']);
$nav_first_title = $nav[0]['title'];
foreach ($menus['main'] as $key => $item) {
if (!is_array($item) || empty($item['title']) || empty($item['url']) ) {
$this->error('控制器基类$menus属性元素配置有误');
}
if( stripos($item['url'],MODULE_NAME)!==0 ){
$item['url'] = MODULE_NAME.'/'.$item['url'];
}
// 判断主菜单权限
if ( !IS_ROOT !$this->checkRule($item['url'],AuthRuleModel::RULE_MAIN,null) ) {
unset($menus['main'][$key]);
continue;//继续循环
}
// 获取当前主菜单的子菜单项
if($item['title'] == $nav_first_title){
$menus['main'][$key]['class']='current';
//生成child树
$groups = M('Menu')->where("pid = {$item['id']}")->distinct(true)->field("`group`")->select();
if($groups){
$groups = array_column($groups, 'group');
}else{
$groups = array();
}
//获取二级分类的合法url
$where = array();
$where['pid'] = $item['id'];
$where['hide'] = 0;
if(!C('DEVELOP_MODE')){ // 是否开发者模式
$where['is_dev'] = 0;
}
$second_urls = M('Menu')->where($where)->getField('id,url');
$third_urlss=array();
if(!empty($second_urls) $flag){
foreach($second_urls as $key=>$v){
$wheres = array();
$wheres['pid'] = $key;
$wheres['hide'] = 0;
if(!C('DEVELOP_MODE')){ // 是否开发者模式
$wheres['is_dev'] = 0;
}
$third_urls[] = M('Menu')->where($wheres)->getField('id,url');
foreach($third_urls as $vv){
foreach($vv as $key=>$vs){
$third_urlss[$key]=$vs;
}
}
}
}
if(!IS_ROOT){
// 检测菜单权限
$to_check_urls = array();
foreach ($second_urls as $key=>$to_check_url) {
if( stripos($to_check_url,MODULE_NAME)!==0 ){
$rule = MODULE_NAME.'/'.$to_check_url;
}else{
$rule = $to_check_url;
}
if($this->checkRule($rule, AuthRuleModel::RULE_URL,null))
$to_check_urls[] = $to_check_url;
}
if(!empty($third_urlss) $flag){
foreach ($third_urlss as $key=>$to_check_urlss) {
if( stripos($to_check_urlss,MODULE_NAME)!==0 ){
$rules = MODULE_NAME.'/'.$to_check_urlss;
}else{
$rules = $to_check_urlss;
}
if($this->checkRule($rules, AuthRuleModel::RULE_URL,null))
echo $rules."<br/>";
$to_check_urlsss[] = $to_check_urlss;
}
}
}
// 按照分组生成子菜单树
foreach ($groups as $g) {
$map = array('group'=>$g);
if(isset($to_check_urls)){
if(empty($to_check_urls)){
// 没有任何权限
continue;
}else{
$map['url'] = array('in', $to_check_urls);
}
}
$map['pid'] = $item['id'];
$map['hide'] = 0;
if(!C('DEVELOP_MODE')){ // 是否开发者模式
$map['is_dev'] = 0;
}
$menuList = M('Menu')->where($map)->field('id,pid,title,url,tip')->order('sort asc')->select();
$menus['child'][$g] = list_to_tree($menuList, 'id', 'pid', 'operater', $item['id']);
//支持三级菜单
if(!empty($menus['child'][$g]) $flag){
foreach($menuList as $key=>$v){
$maps['pid'] = $v['id'];
$menuLists = M('Menu')->where($maps)->field('id,pid,title,url,tip')->order('sort asc')->select();
$menus['child'][$g][$key]['ttt'] = list_to_tree($menuLists, 'id', 'pid', 'operater', $v['id']);
}
}
}
if($menus['child'] === array()){
//$this->error('主菜单下缺少子菜单,请去系统=》后台菜单管理里添加');
}
}
}
}
// session('ADMIN_MENU_LIST'.$controller,$menus);
}
return $menus;
}
然后Public/base.html
<!-- 边栏 -->
<div class="sidebar">
<!-- 子导航 -->
<block name="sidebar">
<div class="sidebar-collapse" id="sidebar-collapse">
<i class="fa fa-angle-double-left"><<</i>
</div>
<div id="subnav" class="subnav">
<notempty name="_extra_menu">
{// 动态扩展菜单 //}
{:extra_menu($_extra_menu,$__MENU__)}
</notempty>
<volist name="__MENU__.child" id="sub_menu">
<!-- 子导航 -->
<notempty name="sub_menu">
<notempty name="key"><h3><i class="icon icon-unfold"></i>{$key}</h3></notempty>
<ul class="side-sub-menu">
<volist name="sub_menu" id="menu">
<li>
<a class="item" href="{$menu.url|U}">{$menu.title}</a>
</li>
</volist>
<notempty name="menu.ttt">
<volist name="menu.ttt" id="menus">
<li>
<a class="item" href="{$menus.url|U}">{$menus.title}</a>
</li>
</volist>
</notempty>
</ul>
</notempty>
<!-- /子导航 -->
</volist>
</div>
</block>
<!-- /子导航 -->
</div>
php模拟get和post的几种方法?方法一:
[php]?view?plaincopy
$re?=?file_get_contents($url);??
print_r($re);??
?
方法二:
[php]?view?plaincopy
$ch?=?curl_init("")?;???
curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?true)?;???
curl_setopt($ch,?CURLOPT_BINARYTRANSFER,?true)?;???
$output?=?curl_exec($ch)?;???
$fh?=?fopen("out.html",?'w')?;???
fwrite($fh,?$output)?;???
fclose($fh)?;??
方法三:
其中把post一块包含进来了
[php]?view?plaincopy
function?dfopen($url,?$limit?=?0,?$post?=?'',?$cookie?=?'',?$bysocket?=?FALSE???,?$ip?=?'',?$timeout?=?15,?$block?=?TRUE,?$encodetype??=?'URLENCODE')?{??
????$return?=?'';??
????$matches?=?parse_url($url);??
????$host?=?$matches['host'];??
????$path?=?$matches['path']???$matches['path'].($matches['query']???'?'.$matches['query']?:?'')?:?'/';??
????$port?=?!empty($matches['port'])???$matches['port']?:?80;??
??
????if($post)?{??
????????$out?=?"POST?$path?HTTP/1.0\r\n";??
????????$out?.=?"Accept:?*/*\r\n";??
????????$out?.=?"Accept-Language:?zh-cn\r\n";??
????????$boundary?=?$encodetype?==?'URLENCODE'???''?:?';'.substr($post,?0,?trim(strpos($post,?"\n")));??
????????$out?.=?$encodetype?==?'URLENCODE'???"Content-Type:?application/x-www-form-urlencoded\r\n"?:?"Content-Type:?multipart/form-data$boundary\r\n";??
????????$out?.=?"User-Agent:?$_SERVER[HTTP_USER_AGENT]\r\n";??????????????????????????????
????????$out?.=?"Host:?$host\r\n";??
????????$out?.=?'Content-Length:?'.strlen($post)."\r\n";??
????????$out?.=?"Connection:?Close\r\n";??
????????$out?.=?"Cache-Control:?no-cache\r\n";??
????????$out?.=?"Cookie:?$cookie\r\n\r\n";??
????????$out?.=?$post;??
????}?else?{??
????????$out?=?"GET?$path?HTTP/1.0\r\n";??
????????$out?.=?"Accept:?*/*\r\n";??
????????$out?.=?"Accept-Language:?zh-cn\r\n";??
????????$out?.=?"User-Agent:?$_SERVER[HTTP_USER_AGENT]\r\n";??
????????$out?.=?"Host:?$host\r\n";??
????????$out?.=?"Connection:?Close\r\n";??
????????$out?.=?"Cookie:?$cookie\r\n\r\n";??
????}??
????$fp?=?@fsockopen(($ip???$ip?:?$host),?$port,?$errno,?$errstr,?$timeout);??
????if(!$fp)?{??
????????return?'';??
????}?else?{??
????????stream_set_blocking($fp,?$block);??
????????stream_set_timeout($fp,?$timeout);??
????????@fwrite($fp,?$out);??
????????$status?=?stream_get_meta_data($fp);??
????????if(!$status['timed_out'])?{??
????????????while?(!feof($fp))?{??
????????????????if(($header?=?@fgets($fp))??($header?==?"\r\n"?||??$header?==?"\n")){??
????????????????????break;??
????????????????}??
????????????}??
????????????$stop?=?false;??
????????????while(!feof($fp)??!$stop)?{??
????????????????$data?=?fread($fp,?($limit?==?0?||?$limit?>?8192???8192?:?$limit));??
????????????????$return?.=?$data;??
????????????????if($limit)?{??
????????????????????$limit?-=?strlen($data);??
????????????????????$stop?=?$limit?<=?0;??
????????????????}??
????????????}??
????????}??
????????@fclose($fp);??
????????return?$return;??
????}??
}
PHP 中函数get_include_path()是干什么得get_include_path() 取得当前的环境变量,即php.ini里设置的 include_path;
【PHP】laravel中获取当前路由名称结论:Route类是必须引入的。所以可以调用静态方法 currentRouteName()。
1 - 为什么不引入Route类也可以运行?
因为Route类是在系统启动时作为全局类进行了注册。
在文件 config/app.php 文件内如下所示:
Route门面此处注册到全局,也就是根命名空间。所以在程序内,直接使用 Route::method() 不会有任何问题。
我们在编程中,对于全局注册的类,也需要通过此方法,添加注册。
2 - 获取当前路由名称的一些方法举例
使用Route类的方法:
Route::getCurrentRoute()->getPath();
或者使用Request类的方法:
\Request::route()->getName();
laravel 5.1 你得这么写:
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
到了5.2版本,就是题主的写法:
Route::currentRouteName();
5.3版本到5.8版本,更加灵活了:
$uri = $request->path();
使用 Request 对象的方法就可以返回。获取路由,路由名称,方法名:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
到了laravel 7.x 对请求对象 Request 有了更加丰富的特性:
$request->route()->getName();
结语
以上获取路由名的方法,根据不同laravel版本,进行不同的处理。
细节上的不同一定要多加注意。
PHP 如何把 网页文件中的相对路径替换成 绝对路径?这个要根据你的实际情况来看,如果你的文件内的所有已经设置了的绝对路径都相同,则可以先把所有的绝对路径替换为空
查找内容
<a
href="
替换内容
<a
href="
然后再按照楼上的方法,用
查找内容
<a
href="
替换内容
<a
href="
倘若你的绝对路径有不同的,方法也可用,先多次把已经有的绝对路径转换为空(即上面的第一步),最后再用一次第二步.
特殊情况特殊对待,一切还要根据你的实际情况来处理.这里只是一点建议,希望对你有帮助
关于phpgetpath的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。