谁一开始就是大神?

PHP 第98页

PHP

图片上传修改的时候把原来已经上传的图片的路径怎么显示在fileInput表单里?[2.0]

CGelephant阅读(85)

我在做一个图片多图片上传的功能 图片能上传成功 ,也能在视图页面正常显示。但是在二次修改的时候,一提交就没了 原因是在二次修改的表单里 你如果不选择图片 fileInput 表单里是空的所以就把数据库里的图片路径更新成空的了,我现在想到的解决办法是 (在二次修改的时候把原来已经上传的图片的路径显示在 fileInput 表单里,这样就可以避免了)

fileinput是个例外,无论insert操作还是update,正常情况在表单中选择文件的地方是清空的,可能是w3c的定义。你也可以在接收POST数据之前保存文件路径的字段的值,接收post数据之后如果发现浏览器没有新文件upload,那么save之前还原你之前保存的值即可。
你的方法也可以,有个负面影响就是用户体验会下降一些,和正常的文件上传表单感觉不一样。
骚年你确定你修改的model是findOne出来的而不是直接new出来的?
如果你在上传成功后添加数据库,那么插入库的时候没有把图片地址插库?
如果你的图片路径指的是本地路径的话,这样是行不通的,因为我记得OSX或者Linux系统是没办法获取这个路径的。
我的解决方案:

关于updateAll之后事件触发的问题[2.0]

ACGlemon阅读(89)

大家好,请问, 使用AR updateAll 是不是 不会触发 afterUpdate 等事件?

类似的内容 请问哪里查看? 代码中是否可以 在使用 updateAll 之后 手工触发 afterUpdate 事件?

updateAll()只返回受影响的行数,那个行数在一个事件里能玩出什么名堂呢?所以afterUpdate对于updateAll来说没有任何意义。你想干什么,就在调用updateAll()之后调用一个函数就好了,或者触发一个自定义的事件。
比较update()updateAll()的区别。或者看这两个函数的框架源码。
updateAll 不能触发 afterUpdate
可以自己注册事件,然后emit
afterUpdateAll 这个来触发

怎样把markdown编辑器像舰长一样应用到页面中?[2.0]

coolKeo阅读(89)

试了很多,都没成功,谁有实例或者有过部署 markdown 经验,不胜感激啊。成功让我的页面部署上 markdown 编辑器,888分抱回家~~~

我用的是这个编辑器。
GitHub地址:http://github.com/toopay/bootstrap-markdown
DEMO演示:http://www.codingdrama.com/bootstrap-markdown/
拿去用吧,把分给我留下!
Bootstrap-Marokdown
任性了哈…
下次问个一次性花完钱的问题
我就是需要这个

关联表的删除报错捕获[1.0]

Fionaqueen阅读(88)

我有a表和b表,他们有关联关系,b表是a表的外表,当我删除b中的内容时,会报代码级别的错误,那我怎样通过异常抛出来捕获异常,而不是报代码级别的错误?

以下是代码:

public function actionRequirementDelete($id,$page)
{
    $page = $page + 1;
    $requirement_data = Requirement::model()->findByPk($id);
    
    $transaction = $requirement_data->dbConnection->beginTransaction();
    try{
        if($requirement_data->delete()){
            $this->redirect(array('/user/employer','page'=>$page));
        }else{
            throw new Exception("订单删除失败");
        }
        $transaction->commit();
    }catch (Exception $e){
        $transaction->rollback();
        echo $e->getMessage();
    }
}

你的这个需求,其实有好几种解决方式:
1.是否一定需要报错?是否可以考虑在数据库里设置一下外键删除时的动作,比如CASCADE ?
2.如果按你说的,你需要删除时判断是否有从属数据,那么你应该先判断从属数据是否存在,而不是通过异常去处理,因为异常出现的可能性很多,不一定是因为存在从属数据导致。
3.我看到了你的异常捕获,
这种形式是正确的,但是你的思路错误,你认为delete()返回非true值时应该抛出一个异常,但是事实上delete()方法在删除报错时,内部已经先一步抛出了异常,也就是说,你的throw new Exception("订单删除失败");应该是不会触发的。
心有余而力不足,唉,不会
自定义一个exception 比如UserException 或者OrderException等等,然后只捕获这个异常 ,其他的异常让系统处理去吧
php的错误和异常不是一个统一的概念,php有的错误是无法捕获的,比如致命错误和编译错误等,如果抛出的是这两种错误,你没办法。如果抛出的是警告、提醒等,好像通过设置是可以通过CException捕获的。
可以先做unlinkAll,把有外键依赖的关系表中的数据先删除,类似
可不可以关联修改?

Yii2权限管理,我写在了beforeAction里,但输出json时就出错了[2.0]

NiceKeo阅读(81)

我写了个CommonController,其他Controller都继承这个类。
我在CommonController里写了输出JSON的方法

public function renderJson($params = array()) {
    Yii::$app->response->format = Response::FORMAT_JSON;
    return $params;
}

在CommonController的beforeAction写了验证

$isAjax = Yii::$app->request->getIsAjax();
//未登录
if (\Yii::$app->user->isGuest) {
    if ($isAjax) {
        return $this->renderJson(array(
            'status' => -1,
            'message' => '请先登录',
            'url' => Yii::$app->getHomeUrl()
        ));
    } else {
        return $this->goHome();
    }
}else{
    return parent::beforeAction($action);
}

这样,如果不是ajax请求就没问题,会跳到登录 ,但是如果是ajax请求。就会出错

PHP Notice 'yii\base\ErrorException' with message 'Trying to get property of non-object' 

求解答

beforeAction返回的应该是true或者false,要直接输出的话,应该还是返回false,通过response指定输出的内容,类似这样
试试将Response::FORMAT_JSON换成'json',如果OK的话,说明CommonController没有这条语句:use yii\web\Response;

写出这样的POST[2.0]

littleslim阅读(86)

$_POST['images'] = serialize($_POST['images']);

怎么写出这个在YII2里。用YII2的方法。

研究了一下,目前有了具体答案了
Yii::$app->request->post();
以上这一句的作用是判断是否是通过post提交,且可以给提交的name设定一个默认值,比如:
Yii::$app->request->post('name','user_name');
我有发现当第二个参数不设定的时候返回的就是null,没啥用途。
真正让数据进入model层的在于 Model 下面的load()方法,载入的是提交后的值如下代码:
以上就是获取提交数据的简单粗暴的方法。到这里依然还没进入主题。
根据楼主的需求是,要对提交的值进行再次操作,也就是在入库前做些序列化也好或者是对数据进行进一步处理的好。怎么做呢?
从追踪代码来看,绕了好大的一个圈子,最后回到了Model层上,这个类中的某些方法完全可以完成我们的需求,请看代码:
总结:主要的核心症结在于,post过来后的数据,接下来的工作是由model层来完成的。就不要继续玩$_POST了。
希望可以帮到你!
如果大家觉得还有其他的比较方便的方式,还望告知!
我是鬼鬼,鬼一浪人是也!201150612
$_POST['images']是什么类型的数据?为什么要序列化?
Yii::$app->request->post();//$_POST

yiirelations非主键关联[1.1]

lovelyJames阅读(81)

微信表(wechat)
id,number(微信号)

文章表(artivle)
id,wechat_number(微信号)

这里没用id做关联

我在Article modle里面是这么写的:

'wechat_info'=>array(self:BELONGS_TO, 'Wechat', '', 'on'=>'t.wechat_number = wechat_info.number')

这是我在网站通过查资料后感觉应该这么写的,一直不成功,我有几个疑点
1、 t.wechat_number 中 t 代表什么,我个人感觉好像是文章表(article)的别名。不知道是不是我理解错了?

2、我看过一些示例,像我这么写的应该生成的是个左链接,但我看了报错代码,貌似没有生成左链接,报错的内容是t.wechat_number字段不存在

你的Article文章表有这个字段吗
t.代表主表别名
非主键关联的话可以用数组去建立关系

登录

找回密码

注册