我不知道发生了什么,但我在数组中有一个字符串.它必须是一个字符串,因为我先在它上面运行它:
$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'但我仍然无法解决该怎么做.
而不是错误页面/ 404我想只显示/ sitemap页面.当然我不想重定向,我仍然希望设置404 HTTP响应头.
这可能吗?我只能看到如何在Twig中设置模板.
我绝对不想要重定向.
我试图找出用户是否在安全防火墙内.
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) 这应该很简单,但事实并非如此.
document.getElementsByTagName('body')[0].document.createTextNode( document.createElement('<div>some HTML</div>') );
Run Code Online (Sandbox Code Playgroud)
它创建为文本节点.我该怎么做才能在没有jQuery的情况下添加HTML?
我想在页面加载后预加载一个大型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.谢谢你的帮助.
http://page-test.co.uk/cal/ - FullCalendar演示
我已经设置了这个基本的jQuery FullCalendar设置,其中包含相关附加内容以支持触摸设备.
链接页面中包含的文件都是默认文件.
该演示适用于非触摸设备,但触摸设备很难.
在拖动一个项目时,主要在iPhone/iPad上进行测试(其他触摸设备或多或少完全相同),另一个项目不能.所以你可以拖动任何项目,但其他项目都是锁定的.
一些关键点:
更改视图(月/周等)然后允许再次拖动所有内容
如果您先点击/触摸另一个元素,然后可以拖动它,而不是其他元素,直到您先触摸它们.
在BlackBerry Playbook上,它实际上的行为略有不同.如果你去拖一个不同的元素(通常什么都不会发生),那么在PlayBook上它似乎什么都不做(当你在屏幕上滑动手指时) - 但是当你放手时(还没有发生) go选择draggable元素,然后取消选择它.如果你然后去拖动该元素它工作正常.
更改设备的方向会立即锁定页面上的所有元素,并且必须先执行一次将视图更改为月/周或触摸元素,然后才能再次拖动任何内容.
我打赌这是一个单行修复,但我花了几个小时,只是不能让它做任何事情.
我只是想在iPad/iPhone上工作.
似乎要么是mouseup/touchend没有触发某些东西,要么是在第一次拖动后删除了touchstart事件,但我无法解决问题.
我有一个在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?
有关最佳实践方法的任何想法吗?它应该很容易编码,但我正试图弄清楚它的设计.
我在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%}获取所有值?
我正在扩展身份验证失败处理程序,一切都主要工作正常,但一个小问题.
这是我的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的名称,它会破坏.当然,这些价值观是以更好的方式提供的吗?
我无法相信我似乎无法在任何地方找到它(不仅仅是强制整个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)
那么,有人能指出我正确的方向吗?
symfony ×6
php ×3
javascript ×2
doctrine ×1
doctrine-orm ×1
fullcalendar ×1
jquery ×1
json ×1
twig ×1