Skip to content

Webservice

Emil edited this page Dec 9, 2024 · 16 revisions

Webservice - Connecting Javascript with PHP

The webservices are what specifies what functions the Javascript can call within PHP.

The 4 necessary files

When creating a webservice to allow Javascript to call a function in PHP 4 files are necessary to create/edit.
These files are:

  • db/services.php (edit)
  • classes/external/name_of_class.php (create)
  • amd/src/repository.js (edit)
  • amd/src/JS_file_that_calls_php_function.js (create/edit)

db/services.php

The services.php file is the file that defines what functions that the PHP should allow to be called by the Javascript.
In this file there is a list of functions that is defined, here is an example of a function:

'mod_livequiz_submit_quiz' => [
        'classname'   => 'mod_livequiz\external\submit_quiz',
        'description' => 'Record user participation and answers in a livequiz.',
        'type'        => 'write',
        'ajax'        => true,
        'services'    => [MOODLE_OFFICIAL_MOBILE_SERVICE],
    ],

We only need to edit the classname and the description. Here it is important that the classname links to the correct class in the external folder.

classes/external/name_of_class.php

amd/src/repository.js

The repository.js file is where the Javascript defines the PHP functions that can be called.
Here is an example of a function definition:

export const submitQuiz = async(quizid, studentid, resultsurl) => fetchMany([
    {
        methodname: 'mod_livequiz_submit_quiz',
        args: {
            quizid,
            studentid,
            resultsurl
        },
    }
])[0];

It is important that the methodname is correct, such that it will consist of the module name in this case mod_livequiz_ and the name of the class in this case submit_quiz.
Thus the only thing to edit is the method name and the corresponding arguments.

amd/src/JS_file_that_calls_php_function.js

Clone this wiki locally