如何使用isset()与symfony和post参数

时间:2017-04-22 09:15:10

标签: php symfony post parameters

在平板php中我可以像这样写这行

if(isset($_POST['MoveString'])){

//code here 


}

但在symfony中我编写代码

if(isset($request->get('MoveString'))){

//my code here

}

我收到此错误

Compile Error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)

那么错误的是,他们的结果是否相同?

1 个答案:

答案 0 :(得分:2)

根据isset documentation的这一部分:

  

警告

     

isset()仅适用于变量,因为传递任何其他内容都会产生   在解析错误。

代码中表达式的结果在哪里?

要弄清楚这一点,请快速查看Request\get方法的实现:

public function get($key, $default = null)
{
    if ($this !== $result = $this->attributes->get($key, $this)) {
        return $result;
    }
    if ($this !== $result = $this->query->get($key, $this)) {
        return $result;
    }
    if ($this !== $result = $this->request->get($key, $this)) {
        return $result;
    }
    return $default;
}

正如您所看到的,例如来自通过$this->attributes属性调用的ParameterBag对象,您也可以检查其他属性[查询,请求]对象。

$ result返回表达式的结果

public function get($key, $default = null)
{
    return array_key_exists($key, $this->parameters) ? $this->parameters[$key] : $default;
}

所以你只需要 - 如错误解释 - 使用你的陈述如下:

if($request->get('MoveString') !== null){

//my code here

}

甚至更简单:

if($request->get('MoveString')){

//my code here

}