如果您对JS文件中的数组未发送到symfony控制器和js数组push不进去感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解JS文件中的数组未发送到symfony控制器的各种细节,并对js数组p
如果您对JS文件中的数组未发送到symfony控制器和js数组push不进去感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解JS文件中的数组未发送到symfony控制器的各种细节,并对js数组push不进去进行深入的分析,此外还有关于Ajax 调用 Symfony 控制器、javascript – 外部js文件中的Symfony 2翻译、php – symfony 3控制器中的自定义注释、php – Symfony中的URL自动添加了params?Symfony =的实用技巧。
本文目录一览:- JS文件中的数组未发送到symfony控制器(js数组push不进去)
- Ajax 调用 Symfony 控制器
- javascript – 外部js文件中的Symfony 2翻译
- php – symfony 3控制器中的自定义注释
- php – Symfony中的URL自动添加了params?Symfony =
JS文件中的数组未发送到symfony控制器(js数组push不进去)
Two files的名称相同,但类型不同。从jquery创建的The first one具有数组,但是从<form action="{{ path('save_changes') }}" method="POST" id="formTableChange">
创建的the second one没有该数组。重定向后,带有数组的文件消失了,仅保留了由重定向创建的the one
树枝
`{%扩展了'main / base.html.twig'%} {%block body%}
<div>
<div>
<div>
<h1>
{{ thisUser_group }}
</h1>
</div>
</div>
</div>
<div>
<div>
<div id="app">
<form action="{{ path('save_changes') }}" method="POST" id="formTableChange">
<table id="Table">
<th id="TableNAME" rowspan="2"> NAME</th>
<th id="TableMonth" colspan="{{ daysInMonth }}"><a href=""><</a>{{ monthList[monthNow-1] }}<a href="">></a>
<tr>
{% for i in range(1,daysInMonth) %}
<th>{{ i }}</th>
{% endfor %}
</tr>
</th>
{% for user_group in users_group %}
<tr>
<td id="TableName_{{ user_group.id }}">
{{ user_group.username }}
</td>
{% for i in range(1,daysInMonth) %}
<td contentEditable="true" id="{{ yearAndMonthNow }}-{{ i }}_{{ user_group.id }}"> </td>
{% endfor %}
</tr>
{% endfor %}
</table>
<button id="saveTableChange">Save</button>
</form>
</div>
</div>
{%endblock%} {%block addjs%} {%endblock%}`
,
很难不看到html就知道它,但是看起来您的按钮在form
内,并且单击正在提交它,因为这是按钮的默认行为。为防止这种情况,只需使用.preventDefault()
禁用默认功能即可。
$("#saveTableChange").click(function(e){
e.preventDefault();
var arrayMiss = [];
// Rest of the code
});
Ajax 调用 Symfony 控制器
如何解决Ajax 调用 Symfony 控制器?
我正在尝试使用 ajax 调用一个方法。 ajax连接成功,没有出现错误提示。
JS 代码
$("[id^=changeStatus]").each(function(){
$(this).on("click",function(){
const id = $(this).data(''id'');
console.log(id);
$.ajax({
type: "POST",url: "{{url(''change_order_status'')}}",data: id,async: false,})
.done(function() {
console.log(''success'');
})
.fail(function () {
console.log(''error'');
});
});
但是控制器中的方法似乎不起作用。 控制器
/**
* @Method("POST")
* @Route("/%eccube_admin_route%/",name="change_order_status")
* @param $request
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function changeOrderStatus(Request $request)
{
if (!$request->isXmlHttpRequest()) {
throw new BadRequestHttpException();
}
$this->logger->info("it''s working");
dump($rquest);
}
我不知道它有什么问题。 请帮忙。
我将 js 作为片段插入到每个页面中,这就是它无法正常工作的原因。
解决方法
您必须在控制器中返回 Response 类的实例。所以在这里,你可以做的是返回一个 JsonResponse
return new JsonResponse($request->getContent());
,
也许你可以试试这个。
$("[id^=changeStatus]").each(function(){
$(this).on("click",function(){
const id = $(this).data(''id'');
console.log(id);
$.ajax({
type: "POST",url: "{{ path(''change_order_status'') }}",data: {
id : id
},async: false,})
.done(function(data) {
console.log(data)
console.log(''success'');
})
.fail(function () {
console.log(''error'');
});
});
/**
* @Route("/%eccube_admin_route%/",name="change_order_status",methods={"POST"})
* @param $request
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function changeOrderStatus(Request $request)
{
if (!$request->isXmlHttpRequest()) {
throw new BadRequestHttpException();
}
$this->logger->info("it''s working");
$id = $request->request->get(''id'');
// Try to dump your request
// dd($request);
return $this->json([
''success'' => true
]);
}
我只是不知道 eccube_admin_route 是什么意思。 并且不要忘记在您的控制器类中扩展 AbstractController
这是我项目中的示例。尝试转储您的控制器对象并使用 symfony 调试栏打开您的 ajax 请求,点击 url 列
javascript – 外部js文件中的Symfony 2翻译
我想将一些翻译放到外部Java Script文件中的函数中.可以解析js文件,例如像Twig模板?
解决方法:
我可以推荐BazingaJsTranslationBundle(@smoreno建议使用的捆绑包,但同时更改了名称).
如果您不想使用Bundle,那么有一个简单易用的解决方法:您可以在HTML twig文件中定义已翻译的字符串,并在外部JavaScript文件中调用它.比如这样
HTML文件
{# index.html.twig #}
<html>
<head></head>
<body>
{# Your stuff #}
<script type="text/javascript">
var myTranslatedString = '{{ 'my_string'|trans }}';
</script>
</body>
</html>
翻译文件
# messages.en.yml
my_string: 'My Content'
JavaScript文件
// script.js
alert(myTranslatedString); // Will output 'My Content'
php – symfony 3控制器中的自定义注释
if (!$request->getContentType() === 'json' ) { return new JsonResponse(array('success' => false)); } $content = $request->getContent(); if(empty($content)){ throw new BadRequestHttpException("Content is empty"); } $data = json_decode($content,true); if(empty($data) || !array_key_exists('type',$data)) { return new JsonResponse(array('success' => false)); }
如何制作自定义注释@CheckRequest,我可以使用$request对象作为参数?
注解
/** * @Annotation */ class CheckRequest { }
服务定义
services: controller_check_request: class: AppBundle\EventListener\ControllerCheckRequestListener tags: - { name: kernel.event_listener,event: kernel.controller,method: onKernelController} arguments: - "@annotation_reader"
监听器:
namespace AppBundle\EventListener; use AppBundle\Annotation\CheckRequest; use Doctrine\Common\Annotations\Reader; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Event\FilterControllerEvent; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; class ControllerCheckRequestListener { /** @var Reader */ private $reader; /** * @param Reader $reader */ public function __construct(Reader $reader) { $this->reader = $reader; } /** * {@inheritdoc} */ public function onKernelController(FilterControllerEvent $event) { if (!is_array($controllers = $event->getController())) { return; } $request = $event->getRequest(); $content = $request->getContent(); list($controller,$methodName) = $controllers; $reflectionClass = new \ReflectionClass($controller); $classAnnotation = $this->reader ->getClassAnnotation($reflectionClass,CheckRequest::class); $reflectionObject = new \ReflectionObject($controller); $reflectionMethod = $reflectionObject->getmethod($methodName); $methodAnnotation = $this->reader ->getmethodAnnotation($reflectionMethod,CheckRequest::class); if (!($classAnnotation || $methodAnnotation)) { return; } if ($request->getContentType() !== 'json' ) { return $event->setController( function() { return new JsonResponse(['success' => false]); } ); } if (empty($content)) { throw new BadRequestHttpException('Content is empty'); } $data = json_decode($content,true); if ($request->getContentType() !== 'json' ) { return $event->setController( function() { return new JsonResponse(['success' => false]); } ); } } }
请注意,不是返回响应,而是使用$event-> setController();设置整个控制器,并且在进行该调用时也必须返回.
然后在您的控制器中,您可以在整个类中设置它:
use AppBundle\Annotation\CheckRequest; /** * @CheckRequest */ class YourController extends Controller { }
或个别方法/行动:
use AppBundle\Annotation\CheckRequest; class TestController extends Controller { /** * @Route("/",name="index") * @CheckRequest */ public function indexAction(Request $request) { // ... } }
php – Symfony中的URL自动添加了params?Symfony =
我的网址有问题. Symfony会自动添加params?Symfony =
怎么删除?
我认为这是一个改变的服务器设置.
http://mysite.com/?symfony=123456789
Symfony:Symfony 1.4
解决方法:
它看起来像会话ID.
将session.use_only_cookies设置为1仅使用cookie在客户端存储会话ID.
今天关于JS文件中的数组未发送到symfony控制器和js数组push不进去的讲解已经结束,谢谢您的阅读,如果想了解更多关于Ajax 调用 Symfony 控制器、javascript – 外部js文件中的Symfony 2翻译、php – symfony 3控制器中的自定义注释、php – Symfony中的URL自动添加了params?Symfony =的相关知识,请在本站搜索。
本文标签: