谁一开始就是大神?

PHP 第90页

PHP

centos6.6+nginx+phpyii2.0配置问题[2.0]

HaHCherry阅读(71)

操作系统 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.phphttp://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 网关超时

createUrl的一个问题,我晕了?

NobleLion阅读(58)

网站的根目录是 /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
这样不就行了

序列化的问题[2.0]

Jadelove阅读(59)

我将一条信息序列化插入到数据表中 表中数据如下:

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')

这一块出来的是一个空数据呢

先单独测试这个函数,确认你给的参数满足这个函数的需求。
还有就是你给的数组参数中有idattr_value两个键不?

Yii2返回某个列怎么写?[2.0]

momolovely阅读(62)

返回某个列怎么写?

如: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吧,有代码提示,能跟踪,很容易上手的~

在modelrules某欄位使用unique此然為驗證時無法成功[2.0]

youthlovely阅读(65)

前提
新增與修改 同一個表單,情境(scenario) 那我在送出後 新增可執行
但在修改的時候($model->validate())
假使欄位為 account_name 已有相同名稱就會無法驗證成功
但我的需求是 account_name 他初始的值可以修改並存入資料庫 但有重複到的值就無法修改
請問:
1.假使碰到這種狀況 新增與修改 需要用同一個情境嗎(小弟我是用同一個)
2.如果同一情境(scenario)下,有辦法可以解決嗎??
3.又或者自行附加 rules function
(附加過function rules 但同一情境下會先被 unique 先擋掉而不執行, 除非使用不同得情境)

第一次發文 請指教

也不一定要分不同情境。Yii model 有一个isNewRecord方法,用它来判断是否是新增记录,这样一来就可以做个条件判断,判断是新增还是修改。如果不是新增,再查询是否有重复的值,有重复的值就不保存。
$model->getErrors()打印下就知道错那了
rules 中有一个 when属性,这个属性能让你判断是否运行接下来的验证,相当于beforeValidateAttribute;

一个单独的html,用ajax去请求用yii写的接口,请求url和一些配置是怎么弄得,还有如何跨域[2.0]

CGdear阅读(62)

就是比如我本机有一个注册的html页面,单独的,与yii无关,不是yii里的view,然后我用yii写的接口放在买的服务器上,那么它们之间就有一个跨域的问题,之前没用框架写的接口,解决跨域是只要在php接口头上加一句header("Access-Control-Allow-Origin:*");就可以了,html里面像这样子请求:

$.ajax({
    type: "POST",
    url: "http://xxxx",
    dataType:"json",
    data: {psd:"298865"},
    success:function(json){  
         alert(json);}
    });
});

然后现在就是我的html里url写的是 http://localhost:8080/basic/web/index.php?r=user/register,我暂时还没把接口放到买的服务器上去,可是现在本地的它都报错:

403 Forbidden    You don't have permission to access /127.0.0.0:8080/basic/web/index.php
on this server.

所以想问下 是不是要配置什么的,还是说url不是那样写的。另外就是如果要跨域的话,又该怎么配置,貌似yii有个助手类use yii\filters\Cors;

use yii\helpers\ArrayHelper;
public function behaviors()
{
    return ArrayHelper::merge(
        [['class' => Cors::className(),],], parent::behaviors());
}

助手类要怎么配置。

请先确认你能正常的使用user/register,比如直接在网页访问。检查你YII中编写的注册方法是否正常使用
其次,在你自己写的HTML中用ajax方式访问上方同样的地址,看看是否是跨域的问题
如果是跨域的问题,舰长已推荐jsonp
楼主不懂markdown语法吗?我已经帮你重新编辑了,以后请注意!
考虑使用 jsonp 解决跨域的问题。

基于Yii2开发网站的开放环境中,无法加载图片资源[2.0]

coolJames阅读(60)

浏览器开发工具中提示的信息如下:

Not allowed to load local resource: file:///C:/wamp/www/wangyii/web/images/bucket-file.png 

你要用相对路径……或者最好用/images/bucket-file.png域名的根来访问图片~~~
基础版的吧,把你的源码放出来看看
提示已经说明了,没有权限访问

无法加载自义的命名空间类问题???[2.0]

Oldsuper阅读(65)

使用了高级版, 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()函数报错?

登录

找回密码

注册