谁一开始就是大神?

PHP 第75页

PHP

无法捕获sql连接异常[2.0]

Gracesuper阅读(29)

PHP Warning – yii\base\ErrorException

mysql_connect(): Access denied for user 'r'@'localhost' (using password: YES)
1. at line 29
20212223242526272829303132333435363738     * @inheritdoc
     */
 
    public function actionIndex()
    {	
 
        $model=new EntryForm();
    	if ($model->load(Yii::$app->request->post()) && $model->validate()) {
    		try{
    		$conn=mysql_connect('localhost',$model->user,$model->psw);
    		}catch(Exception $e){echo $e;}

当前命名空间下没有Exception, 需要指明命名空间..
改成这样 : ... catch(\Exception $e) ..., 加一个反斜杠在前面.
另外多嘴一句, mysql系列扩展函数不是早就不建议用了吗?
PDO 是个好选择 或者 mysqli 系列

namespaceuse作用域问题。[2.0]

Bravequeen阅读(31)

假如说:a.php,定义 namespace yii\a. b.php 里面定义namespace yii\b.我在b.php里面可以使用use yii\a吗?

如果可以的话,那use 的作用域有多广。

再比如说:在同一个服务器上有A站和B站两个网站,A站目录下有上面的a.php ,B站目录下有上面的b.php ,还可以在b.php里面使用use yii\a吗?

一, 第一个问题, 需不需要把文件导入进来?
答案是 : 需要!
但是在各种框架内, 你不会直观的感受到这一点, 因为都实现自动加载了.
早期__autoload 后来 又增强版spl_autoload
现代框架都是遵循composer自动载入标准完成
composer的自动加载标准又和namespace结合了起来, 这个后面补充.
二. 第二个问题, use的作用域是什么, 有多广?
比如 : 同一个服务器上有A站和B站,A站下A\a ,B站有B\b ,还可以在B\b.php里面use A\a吗?`
答案是 : 不知道怎么回答了 = =! 只能说和几个站毫无关系…
在当前请求周期内, 只要先加载到了A\a, 那么随后你都可以use A\a;
这和几个项目没关系, 和文件摆放位置没关系
!!! 只和 当前请求内, 你use的时候 有没有事先声明并include进来有关系;
如果非要说出作用域? 只能看每次请求的实际情况了…
三. 补充
在各种现代框架内(遵循了composer标准的)
一般 只要你use A\a; 就能自动加载进A\a (当然 你确实有声明);
并不用小心翼翼的担心 我use A\a时候, 有没有include进来呀
因为composer就是按照namespace来自动加载类的.
当然并不绝对(未遵循该标准的, composer也提供有自动加载方式)
具体的标准去查一下资料吧 这里就不说了 已经很啰嗦了
了解一下php的语法吧,”use的作用域”这个概念有点”新” :http://php.net/manual/zh/language.namespaces.php

nginx能作为php的生产服务器环境,还能作为哪些语言的?

Kimlove阅读(29)

nginx能作为php的生产服务器环境,还能作为哪些语言的?

只要能实现cgi就行.
所以 理论上讲, 任何一门图灵完备的语言都可以
nginx能作软负载或反向代理,所以理论上后端是什么语言都可以
还可以简单的防护DDOS,WAF防火墙……

[重金悬赏]求完整的windows下yii2安装步骤的教程[2.0]

SlyLion阅读(29)

为了总结经验,准备搜集好的教程,把他编成一本书,在这里:https://github.com/bubifengyun/book-yii2-dev-process

想想四库全书的编者,可能没有发表过一篇著名的文章,但是他们不辞辛苦,汇编中国的文化宝典。做出的贡献是有目共睹的。
为了收集好的素材,特花费本人在该网站的金钱,当然是虚拟的金钱,求稿。

分为几批次求稿。

每次求稿截止时间两周

为每一个优秀教程的提供者,奖励200金币

欢迎大家踊跃参加。

权威指南里的还不够清楚?
http://www.yiichina.com/doc/guide/2.0/start-installation
这是我做的笔记:
1、下载归档文件,并解压到web目录下; 下载地址:http://www.yiichina.com/download
2、将php目录添加到系统的path变量里;
3、运行 “init.bat” 命令,选择开发环境(Development:开发环境; Production:生产环境);
4、执行yii初始化命令 “yii.bat”;
5、新建数据库,并修改数据库配置 “\common\config\main-local.php”;
6、创建相应的数据表,执行命令 “yii.bat migrate”;
7、前台访问页面 http://localhost/advanced/frontend/web/;
对于作者的行为 强烈支持 并表示由衷的感谢。致敬
yii高清视频教程:Yii高清视频教程3个版本

yii表单验证[1.1]

Newfans阅读(35)

model:

public $bPoint;
public $bCard;

/**
 * @return string the associated database table name
 */
public function tableName()
{
	return 'carfree';
}

/**
 * @return array validation rules for model attributes.
 */
public function rules()
{
	// NOTE: you should only define rules for those attributes that
	// will receive user inputs.
	return array(
		array('openid, carmark,bCard realname, telephone, bTime, bArea', 'required'),
		array('flg, service, quality,card_id', 'numerical', 'integerOnly'=>true),
		array('openid, carmark, realname', 'length', 'max'=>50),
		array('telephone, cTime, qTime, sTime, wTime, pTime', 'length', 'max'=>13),
		array('bFlg, quser, suser, wuser', 'length', 'max'=>20),
		array('bArea', 'length', 'max'=>200),
	    array('carmark','match','pattern'=>'/^[\x{4e00}-\x{9fa5}]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[\x{4e00}-\x{9fa5}A-Za-z0-9]{1}$/u'),
	    array('bCard','checkbank'),
		// The following rule is used by search().
		//  Please remove those attributes that should not be searched.
		array('id, openid, carmark, realname, telephone, bTime, bFlg, bArea,bCity,bPoint, cTime, qTime, flg, sTime, wTime, service, quality, pTime, quser, suser, wuser, card_id,bCard', 'safe', 'on'=>'search'),
	);
}

public function  checkbank($attribute,$params)
{
    $card = $this->bCard;
    if($card != '222')
    {
       $this->addError('bCard','银行卡号有误');  
    }
}

views

<?php $form = $this->beginWidget('CActiveForm',array('id'=>'detailForm','enableAjaxValidation'=>false,'enableClientValidation'=>true,'clientOptions' => array('validateOnSubmit'=>true))); ?>
<?php if($flg == 2):?>
<div class="tpy-road-list clearfix">
<div class="tpy-road-lb left"><?php echo $form->label($model,'bCard');?></div>
<div class="tpy-road-input left">
<?php echo $form->textField($model,'bCard',array(
    'class'=>'road-input-txt','placeholder'=>'请输入银行卡号'));?>
<?php echo $form->error($model,'bCard');?>
</div>
</div>
<?php endif;?>

<div class="tpy-road-list clearfix">
<div class="tpy-road-lb left"><?php echo $form->label($model,'carmark');?></div>
<div class="tpy-road-input left">
<?php echo $form->textField($model,'carmark',array(
    'class'=>'road-input-txt','placeholder'=>'请输入车牌号','value'=>$user['carmark']));?>
<?php echo $form->error($model,'carmark');?>
	
</div>
</div>

controller

$flg = $_REQUEST['flg'];
$model = new CarFree;
$model->bCity = 4;
$openid = Yii::app()->session['openID'];
if($openid == '')
{
	echo '您的授权已失效,请重新授权';
}else{
    $user = Publicuser::model()->findByAttributes(array('openid'=>$openid));
}
if($user['realname'] == '微信用户' || $user['realname'] == '微信客户')
{
    $user['realname'] = '';
}

if(isset($_POST['Carfree']))
{
    $model->attributes=$_POST['Carfree'];

    // var_dump($model);exit;
    if($model->validate())
    {
        echo '222';  
    }
}

小弟实在不知model 里的验证方法有何问题,但是一点提交就报错
属性 “Carfree.bCard realname” 未被定义.

rules里的bCard realname是什么鬼?
是指bCard,realname?

算是死在这里了,yii2-redis,求解[2.0]

CandyStone阅读(29)

服务器上直接执行

redis-cli -h localhost -p 7380 

顺利进入

但是安装yii2-redis后配置信息如下

'redis' => [
    'class' => 'yii\redis\Connection',
    'hostname' => 'localhost',
    'port' => 7380,
    'database' => 0,
],

但是在程序中执行如下代码

Yii::$app->redis->hmset('user:1',['name'=>'joe','solary'=>2000]);

却如下错误:

Failed to open redis DB connection (localhost:7380, database=0): 111 - Connection refused

Error Info: Connection refused

实在是不知道为什么,我将 Yii::$app->redis 打印出来,也确实有这个对象.
注:用的高级模板

把 localhost 换成127.0.0.1 试试
这也行???
配置信息:
但是在程序中执行如下代码:
两种情况:

ajax请求没有返回[2.0]

youthKeo阅读(29)

我在view层使用angularjs的$http.post提交数据到服务器,服务器处理数据后把数据上传到一个叫个推的第三方服务器,在第三方处理完成后,再返回数据给view结果无法接收到数据,这个是什么原因导致的啊?求大神们解答

手动提交,确定你的第三方服务器有返回数据先。
angularjs的$http服务不太好用,传值的方式和ajax不一样。我用nodejs也是在req.body里面偶尔获取不到
php在获取值的时候要这么用$res = file_get_contents('php://input','r');

在github上看别人很多都把自己的模块写在vendor里,有什么好处吗?[2.0]

dmfans阅读(29)

在github上看别人很多都把自己的模块写在vendor里,有什么好处吗?

应该是作为公用模块放在vendor里,同时可能还会放到composer服务器上去,方便管理。
估计你是没体验过那种自己电脑上改完代码,轻松一点,所有服务器上的代码就跟着修改的感觉。
那是公用函数写在里面吧
vendor 放的都是框架核心代码 自己写的一般不会放到里面

gii生成的curd表格,怎么加入自义的列[2.0]

Bellapony阅读(31)

将所有列中的未设置改成自定义的字符,该怎么操作呢

方案一
yii\i18n\FormatternullDisplay 属性设置为你想要的.
这将会使得 所有依赖 yii\i18n\Formatter 的地方受到影响(仅值为null时)
方案二
如果不想扩大影响面, 在表格渲染时, 判断并修改之.
文档中自带使用说明

Yii2.0三级联动求助[2.0]

ACGFox阅读(34)

按照,这个帖子http://www.yiichina.com/tutorial/468 三级联动,但是只有第一级有数据,后面两个都是没数据,请大家帮我看一下。
1.jpg

我是这样做的:
1.建立了数据表

/*
Navicat MySQL Data Transfer

Source Server         : MySQL
Source Server Version : 50624
Source Host           : localhost:3306
Source Database       : yii2advanced

Target Server Type    : MYSQL
Target Server Version : 50624
File Encoding         : 65001

Date: 2015-07-13 14:27:12
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for yii2_city
-- ----------------------------
DROP TABLE IF EXISTS `yii2_city`;
CREATE TABLE `yii2_city` (
  `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `pid` smallint(5) unsigned NOT NULL DEFAULT '0',
  `name` varchar(120) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `parent_id` (`pid`)
) ENGINE=MyISAM AUTO_INCREMENT=3410 DEFAULT CHARSET=utf8;

2.我有一个用到省市联动的表tms_course,我利用gii生成Model生成了2个 一个是Course,一个是城市City,下面是Course Model,在里面加入了getCityList($pid)

<?php

namespace app\models;

use Yii;
use \yii\helpers\ArrayHelper;

/**
 * This is the model class for table "{{%course}}".
 *
 * @property integer $id
 * @property string $college
 * @property string $profession
 * @property string $squad
 * @property string $teacher
 * @property string $subject
 */
class Course extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return '{{%course}}';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['college', 'profession', 'squad', 'teacher', 'subject'], 'required'],
            [['college', 'profession', 'teacher', 'subject'], 'string', 'max' => 50],
            [['squad'], 'string', 'max' => 6]
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'college' => 'College',
            'profession' => 'Profession',
            'squad' => 'Squad',
            'teacher' => 'Teacher',
            'subject' => 'Subject',
        ];
    }

    /**
     * @param $pid
     * @return array
     */
    public function getCityList($pid)
    {
        $model = City::findAll(array('pid'=>$pid));
        return ArrayHelper::map($model, 'id', 'name');
    }
}

3.我将如下代码加入了控制器action

    /**
     * Function output the site that you selected.
     * @param int $pid
     * @param int $typeid
     */
    public function actionSite($pid, $typeid = 0)
    {
        $model = new Member();
        $model = $model->getCityList($pid);

        if($typeid == 1){$aa="--请选择市--";}else if($typeid == 2 && $model){$aa="--请选择区--";}

        echo Html::tag('option',$aa, ['value'=>'empty']) ;

        foreach($model as $value=>$name)
        {
            echo Html::tag('option',Html::encode($name),array('value'=>$value));
        }
    }

4.我新建了一个控制器用于调用联动

    public function actionCourse(){
        $model = new Course();
        return $this->render('course',['model' => $model]);
    }

5.我建立了action Course的View,以下是Vies course.php的代码

<?php
use yii\bootstrap\ActiveForm;

/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
?>

<?php $form = ActiveForm::begin(['enableClientValidation' => false]);?>

<?= $form->field($model,'province')->dropDownList($model->getCityList(0),
    [
        'prompt'=>'--请选择省--',
        'onchange'=>'
            $(".form-group.field-member-area").hide();
            $.post("'.yii::$app->urlManager->createUrl('site/site').'&typeid=1&pid="+$(this).val(),function(data){
                $("select#member-city").html(data);
            });',
    ]) ?>

<?= $form->field($model, 'city')->dropDownList($model->getCityList($model->province),
    [
        'prompt'=>'--请选择市--',
        'onchange'=>'
            $(".form-group.field-member-area").show();
            $.post("'.yii::$app->urlManager->createUrl('site/site').'&typeid=2&pid="+$(this).val(),function(data){
                $("select#member-area").html(data);
            });',
    ]) ?>
<?= $form->field($model, 'area')->dropDownList($model->getCityList($model->city),['prompt'=>'--请选择区--',]) ?>
<?php ActiveForm::end();?>

最后运行的时候有问题,只能调用一级联动,后面的都是空的取不到数据,请大神看一下,多谢!

只能一级一级测试,谁也不知道你代码怎么写的,不可能凭这个代码就能看出错误来,最重要的还是自己去调试
代码太长…
你分两头测试,看选了一级后,处理二级的函数能否正确获取一级信息。
再手动指定一个一级数据,看二级数据能否正常显示。
只有这一张表吗,其他表结构是什么样的啊
我也在学这个
请问楼主
$form->field($model,’province’)
这个 province,从哪里来的?
请问楼主这个问题解决了吗?
我也出不来。

登录

找回密码

注册