我需要有关使用带有method = GET的Symfony2.1表单和干净的URL空间的帮助.
我正在创建一个"过滤器",我想在URL中设置,以便人们可以为他们的链接添加书签.
所以,非常简单的代码:
$form = $this->createFormBuilder($defaultData)
->add('from', 'date', array('required' => false, 'widget' => 'single_text', 'format' => 'dd.MM.yyyy'))
Run Code Online (Sandbox Code Playgroud)
我渲染表单小部件,一切都很好.
但是,当我提交表单时,它会产生非常丑陋的GET参数:
/app_dev.php/de/event?form%5Bfrom%5D=17.11.2012
Run Code Online (Sandbox Code Playgroud)
这是因为输入名称当然是 form[from]
所以为了清理URL空间,我自己做了一个主题:
{% block widget_attributes %}
{% spaceless %}
id="{{ id }}" name="{{ id }}"{% if read_only %} disabled="disabled"{% endif %}{% if required %} required="required"{% endif %}{% if max_length %} maxlength="{{ max_length }}"{% endif %}{% if pattern %} pattern="{{ pattern }}"{% endif %}
{% for attrname,attrvalue in attr %}{{attrname}}="{{attrvalue}}" {% endfor %}
{% endspaceless %}
{% endblock …Run Code Online (Sandbox Code Playgroud) 我正在构建一个应用程序,用户可以在其中编辑一些数据,然后呈现一个屏幕,他可以在其中确认(并评论)他的编辑.
在确认表单中,我显示了对实体所做的更改.这适用于"普通"字段.以下是一些用于检查单个字段的代码:
// create $form
// bind $form
if ($form->isValid() {
$data = $form->getData();
// example, get changes of a "normal" field
if ($data['color'] != $entity->getColor()) {
// do something with changes
}
}
Run Code Online (Sandbox Code Playgroud)
但我不能对关系做同样的事情(例如ManyToMany with Users):
if ($data['users'] != $entity->getUsers()
Run Code Online (Sandbox Code Playgroud)
因为$ data ['users']和$ entity-> getUsers()引用相同的持久集合,所以不起作用.可以调用此函数来查看是否有更改:
if ($data['users']->isDirty())
Run Code Online (Sandbox Code Playgroud)
但是不可能看到做了哪些改变.
上面的第二个问题是,如果从持久集合中删除所有项目,则Doctrine不会将其标记为"已更改"(isDirty()= true),因此我无法捕获用户删除所有内容的具体更改"用户"来自表单中的实体.
请注意,代码全部有效,我唯一的问题是我无法查看/处理在确认步骤中所做的更改.
有没有办法使用 Helm 显示已安装图表的可用图表更新?
例如,我有一个“web-app”图表安装为“测试”,版本为 1.2.4,但在我的存储库中,1.2.7 可用:
# helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test default 1 2020-06-04 07:33:07.822952298 +0000 UTC deployed web-app-1.2.4 0.0.1
# helm search repo myrepo
NAME CHART VERSION APP VERSION DESCRIPTION
myrepo/ingress 0.1.0 1.16.0 A Helm chart for Kubernetes
myrepo/sandbox 1.2.3 1.16.0 A Helm chart for Kubernetes
myrepo/web-app 1.2.7 0.0.1 A Helm chart for Kubernetes
Run Code Online (Sandbox Code Playgroud)
我的目标是编写一个脚本来发送任何需要更新的图表的通知,以便我可以查看并运行更新。我很高兴听到任何可以做到这一点的 devOps 风格的工具,
我想创建一个导航抽屉效果,但不是抽屉从左边滑出,它必须在主视图的"后面",所以滑动的项目是视图本身(即向右) - 抽屉完全不动,但通过滑动主视图"揭开".手指轻扫(并点击汉堡包图标)动作与抽屉相同,只是揭示效果不同.
主视图的移动方式与此处可实现的方式相同
但在我的情况下,我希望"抽屉"静止地保持在主视图下方.
通过叠加视图和使抽屉透明,我达到了预期的效果 - 当然这意味着抽屉不再用于导航; 只是为了效果.使用上面链接中的代码
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/whole_frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- everything here is now the new "drawer" -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="BOO I am hiding!"
android:id="@+id/tv2"
android:layout_gravity="left|top" />
<!-- /everything here is now the new "drawer" -->
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- The This is the main content frame -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="MOOOOOO!"
android:id="@+id/textView"
android:layout_gravity="left|top" />
</FrameLayout>
<!-- The see-through navigation drawer -->
<RelativeLayout …Run Code Online (Sandbox Code Playgroud) 我在发短信时遇到了麻烦.
我创建了一个包含以下主题的单独主题文件:
{% block text_widget %}
<div class="text_widget">
{% set type = type|default('text') %}
{{ block('field_widget') }}
</div>
{% endblock %}
{% block textarea_widget %}
<div class="textarea_widget">
{#{% set type = type|default('text') %}#}
{{ block('textarea_widget') }}
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
第一个块主题工作(text_widget),但第二个块导致页面根本不加载.如果我将块行更改为,它可以工作
{{ block('field_widget') }}
Run Code Online (Sandbox Code Playgroud)
但随后twig渲染一个普通的文本字段.根据https://github.com/symfony/symfony/tree/master/src/Symfony/Bundle/FrameworkBundle/Resources/views/Form我应该能够使用textarea_widget.
有任何想法吗?
我需要一些原型内原型的帮助.Symfony非常聪明地生成表单原型,但是一旦你是一层向下(即原型中的原型),它就会为这两个原型重用$$ name $$.
这就是我的实体的原型字段.JQuery使用正确的索引值(基于子节点数)交换$$ name $$
<input type="text" id="entry_entities_$$name$$_contactFax" name="entry[entities][$$name$$][contactFax]" value="" />
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是当你更深入一级时,Symfony也会将$$ name $$用于下一级 - 这里是实体属性的原型:
<div id="entry_entities_123_properties" data-prototype="
<label for="entry_entities_$$name$$_properties_$$name$$_name">Name</label>
<input type="text" id="entry_entities_$$name$$_properties_$$name$$_name" name="entry[entities][$$name$$][properties][$$name$$][name]" value="" />
Run Code Online (Sandbox Code Playgroud)
这意味着(在此示例中为实体ID 123)所有属性都获得ID 123:
name="entry[entities][123][properties][123][name]"
name="entry[entities][123][properties][123][name]"
name="entry[entities][123][properties][123][name]"
Run Code Online (Sandbox Code Playgroud)
等等
在我看来,解决这个问题的最好方法是使用$$ somethingelse $$作为属性 - 有谁知道这个设置在哪里 - 或者有没有人有一个完整的例子与JS如何解决这个问题?我开始在每一行上发现/替换第二个$$名称$$,但它变得非常混乱.我确信有一种简单的方法可以做到这一点,但我在互联网上找不到任何指南.
有谁知道我可以为控制台/命令行命令(或者实际上在应用程序的任何部分中)创建配置的最佳方式?
我想要实现的是这个(例如)
$ app/console myapp:sync --server=server_2
connecting to "server2.servers.com"...success!
sync completed.
Run Code Online (Sandbox Code Playgroud)
其中myapp是/src/myBundle/Command/SyncCommand.php下的命令行类和配置(app/config/config.yml?)中的命令行类:
myapp:
server_1:
hostname: "server1.servers.com"
port: 22
server_2:
hostname: "server2.servers.com"
port: 22
Run Code Online (Sandbox Code Playgroud)
对于这个例子,同步的作用并不重要(代码已经被编写为SyncCommand.php),我只想知道要使用哪个配置文件(我假设是config.yml或parameters.ini)和如何阅读该配置(treeBuilder?或类似$ this-> getParameters('myapp')的东西?我怀疑我遗漏了某些明显的东西.
谢谢!
symfony ×4
forms ×2
php ×2
android ×1
command-line ×1
doctrine-orm ×1
jquery ×1
kubernetes ×1
persistence ×1
symfony-2.0 ×1
symfony-2.1 ×1
theming ×1
twig ×1
url ×1