EDIT: Fixed it, see last line
I'm having trouble defining a custom route. I'm following the guide here: https://docs.espocrm.com/development.../#custom-route
I've created a new Entity called MailingList (yes, I know Target Lists are a thing, but this is mostly just me getting the hang of how it all works) and it seems to work ok.
After a bit of confusion of when to use Camel Case and when to use hyphens, I got my entity and a controller working. I can go to <my-url>/#MailingList/hello/ and it'll run the function defined in my controller, here:
Now, I tried to create a custom route, in custom\Espo\Custom\Resources\metadata\app\clientRo utes.json
This is my routing code:
The idea being that if I go to something like <my-url>/#MailingList/toast/647 it'll run the 'test' function. However if I try this I get a 404. I've cleared cache and rebuilt.
It works if I use <my-url>/#MailingList/test/647 but of course, because the 'id' variable isn't defined in the routing, options.id is undefined. It looks like it's just completely ignoring my routing json.
EDIT: Worked it out, I was being an idiot..... my json file was missing the opening and closing brackets.
I'm having trouble defining a custom route. I'm following the guide here: https://docs.espocrm.com/development.../#custom-route
I've created a new Entity called MailingList (yes, I know Target Lists are a thing, but this is mostly just me getting the hang of how it all works) and it seems to work ok.
After a bit of confusion of when to use Camel Case and when to use hyphens, I got my entity and a controller working. I can go to <my-url>/#MailingList/hello/ and it'll run the function defined in my controller, here:
Code:
define('custom:controllers/mailing-list', ['controllers/record'], function (Dep) { return Dep.extend({ actionHello: function (options) { alert('hello'); console.log('action: hello'); console.log(options); }, actionNewfunc: function (options) { alert('New function!'); console.log('action: newfunc'); console.log(options); }, actionTest: function (options) { alert("Object ID: "+options.id); if (!options.id) throw new Espo.Exceptions.NotFound(); console.log('action: test'); console.log(options); }, }); });
This is my routing code:
Code:
"MailingList/toast/:id": { "params": { "controller": "MailingList", "action": "test" } }
It works if I use <my-url>/#MailingList/test/647 but of course, because the 'id' variable isn't defined in the routing, options.id is undefined. It looks like it's just completely ignoring my routing json.
EDIT: Worked it out, I was being an idiot..... my json file was missing the opening and closing brackets.