can a tools file use controller methods?
Permalink
Hey folks-
I've created a block that has a couple of files in a tools folder. These tools files are called via ajax with a $.get() command in my view.php file which loads properly. But I was wondering if there is a way to have these files also use some methods I've placed in my controller file.
For instance, in my tools file if a place a line like
I get a 'Call to a member function get_date_info() on a non-object' error message
I can place the code in the tools file and reference it like this:
and it works just fine, but I was wondering if there was a way to keep these methods in one place.
In my tools file, I do have the defined('C5_EXEUCTE')... statement and I'm creating the url for the tools file with the following:
I've created a block that has a couple of files in a tools folder. These tools files are called via ajax with a $.get() command in my view.php file which loads properly. But I was wondering if there is a way to have these files also use some methods I've placed in my controller file.
For instance, in my tools file if a place a line like
$something = $controller->method()
I get a 'Call to a member function get_date_info() on a non-object' error message
I can place the code in the tools file and reference it like this:
$something = $method()
and it works just fine, but I was wondering if there was a way to keep these methods in one place.
In my tools file, I do have the defined('C5_EXEUCTE')... statement and I'm creating the url for the tools file with the following:
$uh = Loader::helper('concrete/urls'); $btID = $b->getBlockTypeID(); $bt = BlockType::getByID($btID); $base = $uh->getBlockTypeToolsURL($bt); $path = $base . '/'.$tool_file;
Your second solution worked perfectly!
Thanks, Ryan.
Thanks, Ryan.
How did you get the block controller?
Loader::controller('/path/to/block');
Doesn't work for me, I think Loader::controller is for page controllers only
Loader::controller('/path/to/block');
Doesn't work for me, I think Loader::controller is for page controllers only
For example 1: I believe the function needs to be named action_ajax_results() in this example. It's action_[string_you_passed_to_action]
1. If you just make ajax calls to controller functions directly, just like you'd do a form post:
Then in your controller you'd have a function named ajax_results, you'd do your json output, then exit at the end of the function so it doesn't continue to render the page.
2. Instantiate your controller in the tools file:
The user search in the dashboard works this way: /concrete/tools/users/search_results.php