# |
Mar 6th 2018, 16:38 |
phantomwatson |
Check out `FormHelper::_formUrl()`: https://github.com/cakephp/cakephp/blob/master/src/View/Helper/FormHelper.php#L481 From what I can tell, specifying a URL as an array (but without a route `_name` or any extra passed parameters) for a form results in the record ID being appended (if it exists) to the URL. |
# |
Mar 6th 2018, 16:35 |
admad |
if would be really surprised if what you claim is true |
# |
Mar 6th 2018, 16:34 |
phantomwatson |
I know there are a bunch of easy workarounds too, but specifying a URL as an array just doesn't seem to work the way the documentation suggests it does. If there's no code change, then this might call for a note in the documentation at the least. |
# |
Mar 6th 2018, 16:34 |
savant |
i would file an issue. |
# |
Mar 6th 2018, 16:34 |
savant |
that seems strange behavior |
# |
Mar 6th 2018, 16:33 |
phantomwatson |
Any core developer around to weigh in on the form URL weirdness? I can submit a ticket, but I don't know what to recommend because I don't totally get the logic behind what conditions result in an ID being appended to the URL. And I suppose that altering that might constitute a breaking change. :S |
# |
Mar 6th 2018, 16:29 |
neon1024 |
Issue submitted :slightly_smiling_face: |
# |
Mar 6th 2018, 16:11 |
neon1024 |
You can do some really clever stuff with them |
# |
Mar 6th 2018, 16:11 |
neon1024 |
@flavius Yeah, they’re super handy and really powerful |
# |
Mar 6th 2018, 16:11 |
flavius |
@neon1024 huh, so Today I Learned about mutators -> https://book.cakephp.org/3.0/en/orm/entities.html#Cake\ORM\Entity::get cool :slightly_smiling_face: |
# |
Mar 6th 2018, 16:10 |
phantomwatson |
TL;DR: The form helper adds IDs to URLs if there isn't a route name, and that seems weird to me. |
# |
Mar 6th 2018, 16:09 |
slackebot |
`$this->Form->create()`. Yes, I know that specifying the URL is redundant if the form is submitting to its own URL. Using CakePHP 3.5.8, but it appears to also be the case in the latest version too. |
# |
Mar 6th 2018, 16:09 |
phantomwatson |
`FormHelper::_formUrl()` appears to only return the unmodified value of `$options['url']` if `$options['url']['_name']` is also specified, and it automatically appends the current record's ID to the URL otherwise. Is this intentional? In an application I'm reviewing, this has the effect of the form on `/users/my-account` submitting to `/users/my-account/$userId`, despite explicitly setting the URL _without_ an ID in |
# |
Mar 6th 2018, 16:09 |
dereuromark |
neon1024 give it a spin, sounds like a legit improvement. Just have to dicuss the pros and cons of the solutions available |
# |
Mar 6th 2018, 16:09 |
neon1024 |
Oh yeah, good point! |
# |
Mar 6th 2018, 16:08 |
popperz0r |
using ->having |
# |
Mar 6th 2018, 16:08 |
popperz0r |
ok i got it |
# |
Mar 6th 2018, 16:07 |
neon1024 |
I’d like to propose your idea, I think it’s a good one |
# |
Mar 6th 2018, 16:06 |
neon1024 |
At least an RFC I guess right? |
# |
Mar 6th 2018, 16:06 |
neon1024 |
@dereuromark Do you think it’s worth a ticket? The issue of entity access in templates? |
# |
Mar 6th 2018, 16:06 |
neon1024 |
Well, without a syntax error :P |
# |
Mar 6th 2018, 16:05 |
neon1024 |
For example |
# |
Mar 6th 2018, 16:05 |
neon1024 |
`$this->set('catalog', $this->Catalogs->find()->first()` |
# |
Mar 6th 2018, 16:05 |
neon1024 |
It’s an instance of a class which extends `\Cake\ORM\Entity` |
# |
Mar 6th 2018, 16:04 |
neon1024 |
There are not two types. |
# |
Mar 6th 2018, 16:04 |
flavius |
but not an ORM entity, so which one? |
# |
Mar 6th 2018, 16:04 |
neon1024 |
@flavius It’s an entity |
# |
Mar 6th 2018, 16:03 |
flavius |
@neon1024 what type of object is `$catalog` in your template? |
# |
Mar 6th 2018, 16:03 |
neon1024 |
Ah! |
# |
Mar 6th 2018, 16:03 |
popperz0r |
```(CONCAT(User.first_name, :param0, User.last_name)) AS `full_name```` |
# |
Mar 6th 2018, 16:03 |
neon1024 |
You’d get first and last, and use an entity mutator method instead as detailed in the book |
# |
Mar 6th 2018, 16:03 |
neon1024 |
It doesn’t exist |
# |
Mar 6th 2018, 16:03 |
neon1024 |
You can’t use full_name in your query |
# |
Mar 6th 2018, 16:02 |
popperz0r |
i really gonna make a foreach and filter with php |
# |
Mar 6th 2018, 16:02 |
neon1024 |
Perhaps I could do all this checking when setting stuff to the template in my controller, and set individual variables |
# |
Mar 6th 2018, 16:02 |
popperz0r |
still |
# |
Mar 6th 2018, 16:02 |
slackebot |
(UnqualifiedLead.phone_id) LEFT JOIN email Email ON Email.id = (UnqualifiedLead.email_id) LEFT JOIN city City ON City.id = (UnqualifiedLead.city_id) LEFT JOIN company Company ON Company.id = (UnqualifiedLead.company_id) LEFT JOIN lead_type LeadType ON LeadType.id = (UnqualifiedLead.lead_type_id) WHERE (`full_name` like :c1 AND Email.email like :c2) ORDER BY UnqualifiedLead.id desc``` |
# |
Mar 6th 2018, 16:02 |
popperz0r |
````UnqualifiedLead__user_id`, User.first_name AS `User__first_name`, User.last_name AS `User__last_name`, LeadType.label AS `LeadType__label`, Email.email AS `Email__email`, Phone.number AS `Phone__number`, City.city_name AS `City__city_name`, (CONCAT(User.first_name, :param0, User.last_name)) AS `full_name` FROM unqualified_lead UnqualifiedLead LEFT JOIN user User ON User.id = (UnqualifiedLead.user_id) LEFT JOIN phone Phone ON Phone.id = |
# |
Mar 6th 2018, 16:02 |
popperz0r |
```Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'full_name' in 'where clause'``` |
# |
Mar 6th 2018, 16:02 |
popperz0r |
so this is happening |
# |
Mar 6th 2018, 16:01 |
dereuromark |
well, that is a third issue |