# |
May 19th 2021, 17:30 |
etibor |
thank you thats the best part of open source, working together and improve togather |
# |
May 19th 2021, 17:26 |
kevin.pfeifer |
thats what the support channel is for ;) |
# |
May 19th 2021, 17:20 |
etibor |
thank you all of your help, i may step one step forward in cake |
# |
May 19th 2021, 17:15 |
greg138 |
PEBKAC. :) |
# |
May 19th 2021, 17:15 |
etibor |
sorry, i was wrong, edit_document.ctp was actually empty so clearly shows empty the $this->element('edit_document'); |
# |
May 19th 2021, 17:14 |
khalil |
To test that just add a simple `<h1>Hello World</h1>` in your edit_document element |
# |
May 19th 2021, 17:13 |
greg138 |
Is there any chance that `edit_document` is just not generating any output? |
# |
May 19th 2021, 17:11 |
etibor |
thank you @kevin.pfeifer i tried like this: in controller: $this->viewBuilder()->setTemplate('edit_default'); in edit_default.ctp : echo $this->element('edit_document'); in Element : i have the edit_document.ctp but i got the layout and a blank page However its seems its looks for the edit_document.ctp(when renamed shows error) |
# |
May 19th 2021, 17:07 |
kevin.pfeifer |
if you have "logic" which is decided in the controller but you need the outcome from that logic inside the template then just set some variables like ```$use_element1 = true; $use_element2 = false; $list_of_entities = $this->MyModel->find(); $this->set(compact('use_element1', 'use_element2', 'list_of_entities'));``` and you can access these variables in your template like ```pr($use_element1); pr($use_element2);``` etc. |
# |
May 19th 2021, 17:05 |
greg138 |
If you have the entirety of what a template should show in an element (which needs to be an element because it's re-used in various places), then your template can just be one line, calling the element. |
# |
May 19th 2021, 17:02 |
kevin.pfeifer |
elements are meant to be (re-)used inside (multiple) template files They don't have anything to do with controller logic |
# |
May 19th 2021, 17:02 |
khalil |
@etibor that's not how elements are meant to be used |
# |
May 19th 2021, 17:00 |
etibor |
it the first time that i tried to use an element Can i tell cake in controller to use an element insted of the template ? |
# |
May 19th 2021, 16:57 |
etibor |
hello all |
# |
May 19th 2021, 16:54 |
me1367 |
:P |
# |
May 19th 2021, 16:54 |
khalil |
Life was much simpler back then hahahaha |
# |
May 19th 2021, 16:54 |
me1367 |
I never worked with CakePHP 2 so I have no clue how the ORM was for that :P |
# |
May 19th 2021, 16:54 |
khalil |
Then it's me |
# |
May 19th 2021, 16:53 |
me1367 |
dunno |
# |
May 19th 2021, 16:53 |
khalil |
Is it just me or the new ORM is pretty confusing? |
# |
May 19th 2021, 16:52 |
me1367 |
never gotten the time to do so xD |
# |
May 19th 2021, 16:52 |
me1367 |
My site is still not running CakePHP 4.x :P |
# |
May 19th 2021, 16:52 |
khalil |
(for your eyes only) I switch to Cake 4 months ago, after using Cake 2 for like 7 years :face_with_hand_over_mouth: |
# |
May 19th 2021, 16:50 |
me1367 |
I'm slowly upgrading it for CakePHP 4.x |
# |
May 19th 2021, 16:50 |
me1367 |
x) |
# |
May 19th 2021, 16:50 |
khalil |
PS: I'm checking admiral :) |
# |
May 19th 2021, 16:50 |
khalil |
Yuppp |
# |
May 19th 2021, 16:50 |
me1367 |
And that's where good old OOP got ya covered :) |
# |
May 19th 2021, 16:49 |
khalil |
That's basically why I wanted a way to have something I can access anywhere, instead of repeating the same logic in a component and a helper :P |
# |
May 19th 2021, 16:48 |
khalil |
Hahahaha Always :) |
# |
May 19th 2021, 16:48 |
me1367 |
also, keep your code DRY :P |
# |
May 19th 2021, 16:47 |
me1367 |
It's just basic OOP, generally, unless you really screw up, it's fine to do so :P Just make sure you keep to the _general_ *structure* of CakePHP and you'll be fine. |
# |
May 19th 2021, 16:46 |
khalil |
Very helpful! thanks again :)) |
# |
May 19th 2021, 16:46 |
khalil |
Perfect man I was struggling with this and I had no idea about the utility class, and I always worry about doing something that is considered against CakePHP principles |
# |
May 19th 2021, 16:45 |
me1367 |
Ah yes, I thought you wanted it the opposite way around (from USD to local currency, not local currency to USD). Got it. But yea, that's just in the `beforeSave` . You'd end up with something like this: ```public function beforeSave() { $converter = new CurrencyConverter(); $converted = $converter->convert($amount); }``` |
# |
May 19th 2021, 16:43 |
khalil |
That's why I need access there :) |
# |
May 19th 2021, 16:42 |
khalil |
Now in the view, I can have a simple helper that convert the product price (USD) to your currency (saved in cookie) - when the vendor wants to add a product, I convert the price they enter (in their current currency) to USD and save it in the db ( I should do that in a beforeSave hook on the model level) |
# |
May 19th 2021, 16:41 |
slackebot |
I use that, if not, I detect your ip from a local library, detect your location, and based on your location I know your currency, this only happens on first visit cause after that I save it in a cookie, |
# |
May 19th 2021, 16:41 |
khalil |
@me1367 I think you got me wrong, each product, needs a price to be saved in the db in the end, the base price in the db is USD, the exchange happen in the views, and when adding / editing products, meaning, the price in the db is $100, when you open the site, I detect if you're logged in, if yes, I get your currency (saved in the user profile) if you're not logged in, I check if you have a cookie "currency" saved, if yes, then |
# |
May 19th 2021, 16:39 |
neon1024 |
There surely must be an easier way right? |
# |
May 19th 2021, 16:38 |
khalil |
That's not how it's built, the exchange rates are in php file on the server that gets updated automatically every 24 hours, the exchange rates base currency is USD, so that part is pretty straight forward |