小编use*_*356的帖子

了解什么是\ u0000在PHP/JSON中并摆脱它

我不知道发生了什么,但我在数组中有一个字符串.它必须是一个字符串,因为我先在它上面运行它:

$array[0] = (string)$array[0];
Run Code Online (Sandbox Code Playgroud)

如果我以纯文本形式将$ array [0]输出到浏览器,它会显示:

hellothere
Run Code Online (Sandbox Code Playgroud)

但如果我JSON编码$ array我得到这个:

hello\u0000there
Run Code Online (Sandbox Code Playgroud)

另外,我需要将'there'部分(\ u0000之后的位)分开,但这不起作用:

explode('\u0000', $array[0]);
Run Code Online (Sandbox Code Playgroud)

我甚至不知道\ u0000是什么或如何在PHP中控制它.

我确实看到了这个链接:试图从我的json中找到并摆脱这个\ u0000 ...这表明str_replacing生成的JSON.我不能这样做(并且需要先将上面提到的它分开)所以我然后检查了Google的'php check for backslash\0 byte'但我仍然无法解决该怎么做.

php json

13
推荐指数
3
解决办法
2万
查看次数

显示特定路线而不是错误页面(404) - Symfony2

而不是错误页面/ 404我想只显示/ sitemap页面.当然我不想重定向,我仍然希望设置404 HTTP响应头.

这可能吗?我只能看到如何在Twig中设置模板.

我绝对不想要重定向.

symfony

11
推荐指数
1
解决办法
9608
查看次数

Symfony2 - 检测用户是否在安全防火墙内

我试图找出用户是否在安全防火墙内.

security.yml:

firewalls:
    non_secure_area:
        pattern: ^/
        anonymous: true
    secure_area:
        pattern: ^/admin
        form_login:
            #etc.
        logout:
            #etc.
Run Code Online (Sandbox Code Playgroud)

所以我需要知道用户是否在网站的'secure_area'安全部分内.

我已经使用了这个,但当然它只告诉我是否有人在HTTPS页面上"登录".肯定有更好的办法:

if( $request->isSecure() && $securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED') ) {

} 
Run Code Online (Sandbox Code Playgroud)

php symfony

11
推荐指数
1
解决办法
3461
查看次数

不使用jQuery添加到DOM

这应该很简单,但事实并非如此.

document.getElementsByTagName('body')[0].document.createTextNode( document.createElement('<div>some HTML</div>') );
Run Code Online (Sandbox Code Playgroud)

它创建为文本节点.我该怎么做才能在没有jQuery的情况下添加HTML?

javascript

8
推荐指数
2
解决办法
1万
查看次数

预加载JS,但不要运行它

我想在页面加载后预加载一个大型JS文件,这样当我链接到所需页面上的JS文件时,它已经被下载并缓存了.

我现在基本上都是这样做的,但它确实有效,但当然这不是正确的方法:

preload_js = new Image();
preload_js = "http://domain.com/files/file.js";
Run Code Online (Sandbox Code Playgroud)

这似乎是一种快速而简单的方法,不需要Ajax等等,而且效果很好.

这样做的正确方法是什么?肯定不是与Ajax,因为这似乎有点矫枉过正.

我知道有很多方法可以加载JS但是它们似乎都在脚本加载后实际运行代码,这是我不想要的.

我不想使用jQuery(或任何库),它必须是普通的JS.谢谢你的帮助.

javascript

8
推荐指数
1
解决办法
1855
查看次数

jQuery FullCalendar在触摸设备上工作 - 但是事件的小问题

http://page-test.co.uk/cal/ - FullCalendar演示

我已经设置了这个基本的jQuery FullCalendar设置,其中包含相关附加内容以支持触摸设备.

链接页面中包含的文件都是默认文件.

该演示适用于非触摸设备,但触摸设备很难.

在拖动一个项目时,主要在iPhone/iPad上进行测试(其他触摸设备或多或少完全相同),另一个项目不能.所以你可以拖动任何项目,但其他项目都是锁定的.

一些关键点:

  • 更改视图(月/周等)然后允许再次拖动所有内容

  • 如果您先点击/触摸另一个元素,然后可以拖动它,而不是其他元素,直到您先触摸它们.

  • 在BlackBerry Playbook上,它实际上的行为略有不同.如果你去拖一个不同的元素(通常什么都不会发生),那么在PlayBook上它似乎什么都不做(当你在屏幕上滑动手指时) - 但是当你放手时(还没有发生) go选择draggable元素,然后取消选择它.如果你然后去拖动该元素它工作正常.

  • 更改设备的方向会立即锁定页面上的所有元素,并且必须先执行一次将视图更改为月/周或触摸元素,然后才能再次拖动任何内容.

我打赌这是一个单行修复,但我花了几个小时,只是不能让它做任何事情.

我只是想在iPad/iPhone上工作.

似乎要么是mouseup/touchend没有触发某些东西,要么是在第一次拖动后删除了touchstart事件,但我无法解决问题.

jquery fullcalendar

8
推荐指数
1
解决办法
1万
查看次数

Symfony2将任何HTML控制器输出为JSON

我有一个在Symfony2中创建的网站,现在我想要在移动应用程序中提供该网站的许多功能.
我的想法是通过附加一个简单的URL变量,然后它将在JSON中输出相关页面请求的所有变量.

所以,如果我连接到

www.domain.com/profile/john-smith
Run Code Online (Sandbox Code Playgroud)

它现在返回HTML页面.
但是,如果我去

www.domain.com/profile/john-smith?app
Run Code Online (Sandbox Code Playgroud)

然后它返回一个名称,年龄和其他配置文件信息的JSON对象.
我的应用程序代码然后接收JSON和进程.

我看不到任何安全问题,因为它实际上是JSON中提供的变量而没有HTML.

通过执行上述操作,我可以创建所有应用程序代码,只需调用与网页相同的URL,这将返回JSON中的变量,并节省了对更多服务器端工作的需求.

问题是:如果不修改每个控制器,我该怎么做?

我无法想象一个事件监听器会这样做吗?也许我可以拦截Response对象并删除所有HTML?

有关最佳实践方法的任何想法吗?它应该很容易编码,但我正试图弄清楚它的设计.

symfony

7
推荐指数
1
解决办法
1884
查看次数

树枝空变量 - >例外?

我在Twig中经历一个循环:

{% for item in items %}
<div class="description">
   Title: {{ item.name }}<br />
   Price: {{ item.price }}
</div>
{% else %}
<p>...</p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

如果item.price为空,则会抛出异常.当某个值为空时,我不能简单地强制Twig给出"没有"吗?

或者我是否总是需要{%if item.x%} {{item.x}} {%endif%}获取所有值?

symfony twig

6
推荐指数
3
解决办法
3237
查看次数

覆盖身份验证失败处理程序 - Symfony2

我正在扩展身份验证失败处理程序,一切都主要工作正常,但一个小问题.

这是我的services.yml:

  http.utils.class:
    class: Symfony\Component\Security\Http\HttpUtils
  auth.fail:
    class: Acme\MyBundle\AuthenticationFailure
    arguments:
      - @http_kernel
      - @http.utils.class
      - []
Run Code Online (Sandbox Code Playgroud)

我已将此设置为在security.yml中使用:

failure_handler: auth.fail
Run Code Online (Sandbox Code Playgroud)

这是我的Acme\MyBundle\AuthenticationFailure.php:

namespace Acme\MyBundle;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Http\Authentication\DefaultAuthenticationFailureHandler;
use Symfony\Component\HttpFoundation\Response;

class AuthenticationFailure extends DefaultAuthenticationFailureHandler
{

    public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
    {

        //do something

    }

}
Run Code Online (Sandbox Code Playgroud)

问题是我在security.yml中设置的选项被忽略了.我知道类的_construct方法的第三个参数是$ options数组,我没有作为第三个参数(在services.yml中)传递任何东西,所以我猜这是问题,解决方案可以只是传递值.我猜我也可以这样做:

arguments:
  - @http_kernel
  - @http.utils.class
  - %security.firewalls.secure_area.form_login%
Run Code Online (Sandbox Code Playgroud)

....我没有测试,因为问题是这是在services.yml中的硬编码,并且它不理想,好像我更改了secure_area的名称,它会破坏.当然,这些价值观是以更好的方式提供的吗?

php symfony

6
推荐指数
1
解决办法
9840
查看次数

Doctrine/Symfony2 - DELETE FROM表WHERE field ="test"

我无法相信我似乎无法在任何地方找到它(不仅仅是强制整个SQL).文档谈论添加,搜索,更新和删除实体,但我只是看不到如何在纯SQL中执行此操作:

DELETE FROM table WHERE field = "test"
Run Code Online (Sandbox Code Playgroud)

我猜这只是添加和更新,所以我不能使用这个:

$product = new Product();

// etc.

$em = $this->getDoctrine()->getEntityManager();
$em->persist($product);
$em->flush();
Run Code Online (Sandbox Code Playgroud)

而且我认为'remove'选项也不会这样做:

$em->remove($product);
$em->flush();
Run Code Online (Sandbox Code Playgroud)

那么,有人能指出我正确的方向吗?

doctrine symfony doctrine-orm

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

symfony ×6

php ×3

javascript ×2

doctrine ×1

doctrine-orm ×1

fullcalendar ×1

jquery ×1

json ×1

twig ×1