Witam.
Chciałbym w symfony 6 odwołać się do innej metody w innej klasie. Jak mogę to zrobić. Dokładnie rzecz biorąc napisałem kawałek kodu odpowiedzialny za wczytywanie danych z pliku csv do zmiennej tablicowej następnie ma być wywołana metoda z innej klasy która te dane wstawi do bazy danych. Kod napisany w jednej klasie i jednej metodzie działa prawidłowo ale przy próbie rozbicia pojawia się błąd:
Call to undefined method App\... "
Próbowałem również użyć $this->forward('App\Controller\InsertRecords::insertContact
i wtedy nie mam błędu ale metoda InserContact
się nie wykonuje.
Oto kod pierwszego kontrolera:
#[Route('/import', name: 'app_import')]
function import(Request $request, EntityManagerInterface $entityManager)
{
$form = $this->createFormBuilder()
->add('submitFile', FileType::class, [
'label' => ' '
])
->add('submit', SubmitType::class, [
'label' => 'Zatwierdź'
])
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
/** @var UploadedFile */
$file = $form->get('submitFile')->getData();
// Otwarcie pliku
if (($handle = fopen($file->getPathname(), "r")) !== false) {
// Przetwarzanie danych.
while (($data = fgetcsv($handle)) !== false) {
//Próba odwołania sie do innej metody
$this->insertContact($data[1], $data[2], $data[3]);
}
fclose($handle);
}}
A oto kod metody którą chcę wywołać:
class InsertRecords
{
public function insertContact(string $first_name, string $last_name, string $company, EntityManagerInterface $entityManager)
{
$query = "INSERT INTO contact (first_name, last_name, company)
VALUES(:first_name, :last_name, :company)";
$stmt = $entityManager->getConnection()->prepare($query);
$r = $stmt->execute(array(
'first_name' => $first_name,
'last_name' => $last_name,
'company' => $company,
// 'created_at' => $row['created_at'],
));
}
}