Yii2.0 在params里配置里一个自定义变量envDir, 在view里可以通过Yii::$app->params['envDir']
访问,选择需要在AppAssets里访问这个变量,请问如何做到?
PS: 在AppAssets里我直接访问Yii会报错。
显然是不能这样做,PHP的问题。你应该重写下 init()方法,比如
报什么错?
use Yii; or use :\Yii::$app………..
Yii2.0 在params里配置里一个自定义变量envDir, 在view里可以通过Yii::$app->params['envDir']
访问,选择需要在AppAssets里访问这个变量,请问如何做到?
PS: 在AppAssets里我直接访问Yii会报错。
显然是不能这样做,PHP的问题。你应该重写下 init()方法,比如
报什么错?
use Yii; or use :\Yii::$app………..
我现在在开发的时候,管理后台习惯了使用Admin模块,而这样不是太安全,有没有办法设置成另一个别名访问的,url里就可以通过别名访问,而不能使用 admin 访问,记得thinkphp里有这个功能的,不知道Yii2下下如何实现?
在urlManager添加规则就可以了模块名/<controller:\w+>/<action:\w+>' => 真实模块名称/<controller>/<action>
模块名可以任意修改成你需要的.配合Url,Html生成链接即可.
怎么让自己写的widget 放在github 中让别人可以使用composer下到项目中
谢谢
注:让自己写的项目放在github中我会,但是以插件的形式,可以down到别人项目中,没有思路~望前辈们指点迷津
主要在composer.json
里把autoload
设置好,并且对应上你的命名空间。你可以随意找个插件模仿一下。我是模仿的kartik写的datepicker插件。这是我写的.
然后去packagist 发布你的插件,就一个钩子设置稍微麻烦点,用来同步更新你的更新,都有说明,自己翻译下照着做就可以了。
上传到github和packegist上,如下:
https://github.com/
https://packagist.org/
操作系统 centos6.6
web服务器 nginx1.6.2
数据库为 mysql
开发语言 php5.6.3
yii框架版本:2.0
问题:nginx+mysql+php
已安装成功,http://127.0.0.1
显示php版本信息成功,yii2安装的为高级版本 安装路径为/var/www/yii-test
,对应的./init也成功了。问题来了,如何进行配置、配置那些内容才能让 http://127.0.0.1/frontend/web/index.php
或http://127.0.0.1/backend/web/index.php
好用?求大侠、高手指点指点。
backend和frontend分开配置,可以配置不同端口,比如一个用listen 8000,一个listen 8080,也可以配置不同域名,比如一个server_name www.backend.com,一个server_name www.frontend.com,生产环境中如果需要用到不同子域名,只需要配置不同的server_name,可以都使用80端口。具体例子如下(使用php-fpm):
按这里的配置还是不行,老提示:
502 Bad Gateway
我的老是提示 504 网关超时
网站的根目录是 /aurora/
然后有五个应用,blog + foumn + shop + back + front
back应用是项目的后台,管理blog+foumn+shop,
front应用是blog+foumn+shop的用户中心页面(前台管理嘛),相当于back的功能
现在问题是解决url硬编码的问题,其中blog+foumn+shoap有时会需要
/aurora/back/index.php?r
/aurora/front/index.php?r
的url需求,
然后我发现
//假设在blog应用中
Yii::$app->urlManage->createUrl('');
//结果是
/aurora/blog/web/index.php?r=
//然后加了一个配置
//in blog config
'frontUrl' => [
'class' => 'yii\web\urlManager',
'baseUrl' => '/aurora/front/web'
],
//然后在blog的view中
Yii::$app->frontUrl->createUrl('');
//兴高采烈的以为会
/aurora/front/web/index.php?r=
//发现依旧是
/aurora/blog/web/index.php?r=
//看了源码之后发现是(在 yii\web\UrlManager)
$baseUrl = $this->showScriptName || !$this->enablePrettyUrl ? $this->getScriptUrl() : $this->getBaseUrl();
导致这种效果
大家有没有好的解决方法:
感谢任何建议。
很明显我不会增加这些配置的
'enablePrettyUrl' => true,
'showScriptName' => false,
echo '/api' . Url::toRoute('/site/index')
返回/api/index.php?r=site/index
这样不就行了
我将一条信息序列化插入到数据表中 表中数据如下:
s:37:"1|测试一
2|测试二
3|测试三";
然后写了下面一个语句:
$input=Html::dropDownList("attr[{$key}][name]","",ArrayHelper::map(Util::text2array(unserialize($attr->attr_value)),'id','attr_value'));(其中$attr->attr_value就是序列化的数据)
$html.="<tr><th width='800px' align='right'>{$attr->name}</th><td>{$input}</td></tr>";
请问一下 为什么
ArrayHelper::map(Util::text2array(unserialize($attr->attr_value)),'id','attr_value')
这一块出来的是一个空数据呢
先单独测试这个函数,确认你给的参数满足这个函数的需求。
还有就是你给的数组参数中有id
和attr_value
两个键不?
返回某个列怎么写?
如:select name,password from users;
TP:$User->field('name,password')->where($where)->select();
YII2:?
网站的文档一塌糊涂,原谅我翻了1小时,和百度30分钟都没找到。
只找到了findBySql写法。。。
$teacher->findBySql('select id,name from teacher where id = :id',[':id'=>1])->asArray()->all();
我还不如写原生SQL。。。。(╯□╰)
$teacher::find()->select(['f1','f2'])
建议用PhpStorm吧,有代码提示,能跟踪,很容易上手的~
php 可以跨服务器 执行shell 脚本 吗
前提是php要安装ssh.so扩展.
$cmd=”/bin/sh /root/alidata/test.sh”;
这样试试
这种远程执行 可能会没有环境变量,命令最好都写 全路径
浏览器开发工具中提示的信息如下:
Not allowed to load local resource: file:///C:/wamp/www/wangyii/web/images/bucket-file.png
你要用相对路径……或者最好用/images/bucket-file.png
域名的根来访问图片~~~
基础版的吧,把你的源码放出来看看
提示已经说明了,没有权限访问
使用了高级版, web站点目录为frontend里的web目录
common
|__ config
|-- bootstrap.php //这里定义了别名路径 util
backend
frontend
util // 这个是新添加的类库
|____ image //目录
|__ driver //目录
|__ Gd.php //驱动文件
|__ Image.php
common/config/bootstrap.php 如下:
Yii::setAlias('common', dirname(__DIR__));
Yii::setAlias('frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('console', dirname(dirname(__DIR__)) . '/console');
Yii::setAlias('util', dirname(dirname(__DIR__)) . '/util'); //新添加的一行
在frontend/controllers/siteController.php 里的 actionImg 方法里调用
$image = new uitl\image\Image();
总是失败。使用echo Yii::getAlias('@util/image/Image.php');
查看,路径是没有问题的。
使用的是 Yii自动加载器 http://www.yiichina.com/doc/guide/2.0/concept-autoloading
已经解决,以下方法。以前可能测试的有误
$image = new \uitl\image\Image();
/frontend/config/bootstrap.php下面用
照着我的弄
$image = new uitl\image\Image();
代码拿出来看看
在高级应用模版里,每一逻辑层级会使用他自己的根别名。比如,前端层会使用 @frontend 而后端层会使用 @backend。因此,你可以把前端的类放在 frontend 命名空间,而后端的类放在 backend。 这样这些类就可以被 Yii 自动加载了。
你这种没有autoload的要放到应用下面,光定义别名是不行的,没有加载进去
失败是指?找不到路径?还是说你的image()函数报错?