I have a problem with the cart of Shopware 6.
I need to extend it adding a field to make an association with a "Shop" entity I've created, but I don't see in the documentation a way to do it.
Before to start I though that Carts were defined like other data structure in Shopware, using Entity and EntityDefinition class in php that you can extend with an EntityExtension, but this is not the case and I don't understand how to move in this case.
Can someone help me?
Maybe I missunderstand the goal, but if it's only having some field in storefront, which can be maintained in BE, you might have a look at
https://docs.shopware.com/en/shopware-6-en/settings/custom-fields
and if you want to take action by controller maybe this one?
https://developer.shopware.com/docs/guides/plugins/plugins/framework/custom-field
Related
I want to create a dynamic access level, but I have no idea how to do it.
I need to fully dynamically navigate the menus and buttons of the site, but I do not know if I could do this.
I mean more buttons. For example, the delete and edit button, and the update button.
Please guide me to get a good idea.
I already worked on that type of case. And i used https://www.npmjs.com/package/ngx-permissions which is pretty handy when roles/permissions have to be managed. For example you can retrieve the user roles from the database, and fixe roles behaviors on buttons or panels or everything you want to show/hide. It works like a charm. I encourage you to read the documentation. It will help you for sure.
Have a nice day
You can achieve this using ngxpermission. Refer this link for a sample which has a user component in which buttons and menus are loaded dynamically based on the permission that you have set. I have forked angular 5 example and modified it. But you can achieve the same in latest angular version too.
I have a dgrid with inputs. My dgrid is in edit mode so users can add rows, edit rows and sort rows. When I look at my collection, it looks like
id: "1"
COLUMN1: "INPUT TYPE="text"...."
COLUMN2: "INPUT TYPE="text"...."
Note: I could not put the greater than and less than above with describing the inputs.
and so on. When I make a change on screen, for one of the inputs, the collection is not updated. So, when I enter a new row or sort the dgrid, all the entered data refreshes back to its original state. I know the reason is because the collection is not updated. Is it possible to update the collection or do I have to write my own code to do so? Please note, I am using a dgrid and NOT an onDemand grid.
Thanks for your help in advance.
Please add some code on how you are initializing your collection and what all mixins are being used for it. As far as I can understand your problem, you need to add the Trackable mixin in your collection. Read its documentation here.
From the documentation:
We can add support for tracking the position of updates by using the Trackable mixin. With the Trackable mixin added to a store, we can call the store's track method to get a collection that includes index information in its delete, add, and update events.
This might be of your help.
Actually my requirement is to get the Activity Name when ever the WorkcenterName getting change i need to display corresponding activity in dropdown. Activity i will get from gridData(this is variable in my example).
I tried using cascadeFrom , I am not able to get the value. I hope i explained my requirement clearly.
Here with attached Dojo link. Please have a look my code and give the solutions for this.
http://dojo.telerik.com/APeVA
Thanks in advance..
I was able to find a couple of thing wrong with your dojo code and update your dojo here with a working sample. Here is a list of some of the problems I found, the solution was probably a combination more than 1 of these.
There was no cascadeFrom or cascadeFromField defined in your activity drop down.
I normalized your gridData data set, separating the activities into a separate list that I used to fill the activities drop down. I replaced it with an ActivityId in the gridData. Kendo data sources do not support a object or array field types.
Added a name attribute to the workCenterName drop down so it could be found by cascade setting.
Added an id to the gridData, this helped the edit/cancel/delete work properly.
I have done that in a .cshtml. Hope this can help you.
I have defined the columns as follows:
columns.ForeignKey(p => p.Servicio, (System.Collections.IEnumerable)ViewData["SER"], "CodServicio", "DesCorta").Width(75).EditorTemplateName("ServicioTemplate").Title(Recursos.Resource.SERVICIO);
columns.ForeignKey(p => p.Seccion, (System.Collections.IEnumerable)ViewData["SEC"], "CodSeccion", "DesCorta").Width(75).EditorTemplateName("SeccionTemplate").Title(Recursos.Resource.SECCION);
The secret here is .EditorTemplateName(). I have a folder, in a specific location. Not sure if you can change that, but I think it must be in Views/Shared/EditorTemplates and there I have defined both dropdowns, the second one with .CascadeFrom() property just as you would use it outside of a grid.
Hope this can help you, feel free to ask anything you need!
I want to remove the "New" option in a entry on the main menu. Its that little right arrow that allows the user to see this menu at all, I'd be okay with completely removing that.
Here is what the element looks like in my sitemap:
<SubArea Id="nav_cases" Entity="incident"
DescriptionResourceId="Cases_SubArea_Description"
GetStartedPanePath="Cases_Web_User_Visor.html"
GetStartedPanePathAdmin="Cases_Web_Admin_Visor.html"
GetStartedPanePathOutlook="Cases_Outlook_User_Visor.html"
GetStartedPanePathAdminOutlook="Cases_Outlook_Admin_Visor.html" />
And based on the sitemap documentation I don't think I can acheive this with the xml.
So I guess I want to know if this is possible? Or is this just part of the framework I can't get at? Is there some clever javascript I can do?
The reason I want to remove it is because these are childen in a parent:child relationship and we only want users to create them from the context of the parent record.
Unfortunately I don't think there is a way to do this (unless you go way unsupported and are not online).
An alternative would be to have JavaScript on the form that immediately prompts the user for the parent record. That's probably the approach I would take.
I am researching ways on how to dynamically add form fields for nested models and stumbled accross the nested_form plugin by ryanb. No doubt this is a a great piece of code, but I wondered why does it have to be so sophisticated?
Example: A form for creating / adding a project has one or more tasks assigned. The user can dynamically add more tasks by clicking on a add-task button. A project must have at least one task. Each task has a name and a description.
So why not just:
- When generating the html, sourround each set of task fields with a div given an ID such as "dynamic_fields"
- When the user clicks the add-task button, call a JavaScript function via link_to_function to clone the dynamic_fields subtree. Insert the new set of fields at the bottom of the task list.
- Via JavaScript, remove the values of the newly added fields and replace the child ID with something unique (Ryan suggests using a value based on the current time)
I am aware that the nested_forms plugin also works for deeper nesting structures, but given my simple use case with only one level of hierarchy, is the approach outlined above practical? Or am I missing something important? Any guidance on this topic is appreciated.
Basically, the plugin works as you describe but a form partial is used as the basis.
The ids of nested objects must be unique and it's really easy to stick to the current millisecond time to do that.
Your way to handle the problem would work but would require some additional html to catch the required parts of the form and match what belongs to which additionnal object.
Ryan Bate's code seems complicated but it's not. It introduces complex methods only to make your view look good.
I think there is another solution to this question, a gem named cocoon.