El lenguaje de programación que hemos utilizado es: Laravel Livewire.
En la aplicación hay 2 usuarios: 1) Miembro; 2) administración.
Tenemos un módulo llamado "Actividades" donde el administrador solo puede crear, leer, actualizar e inactivo/activo mientras que el Miembro tiene un tablero donde puede ver todas las actividades activas.
Implementé fullCalendar, logré obtener y mostrar los datos. Ahora lo que quiero es que cuando se haga clic en la actividad, se mostrarán los detalles de la actividad usando modal.
Controlador
public function getActivityDetails(Request $request) { $data = $request->all(); $activity = Activity::where('id',$data['id']); dd($activity); return response()->json($activity); }Vista
<script> $(document).ready(function(){ $.ajaxSetup({ headers:{ 'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content') } }); var activities = @json($activities); var calendar = $('#calendar').fullCalendar({ header:{ left: 'prev,next today', center: 'title', right: 'month,agendaWeek, agendaDay' }, events: activities, selectable: true, selectHelper: true, selectable: true, eventClick: function(event) { if (event.id) { $.ajax({ url: "/members-dashboard/getActivityDetails", type: "POST", data: { id: event.id }, success:function(data){ console.log(data); } }) } } // select: function(start, end, allDays){ // var value = $(this).val(); // console.log(value); // $('#exampleModal').modal('toggle'); // } }); function successResponse(data) { calendar.fullCalendar('refetchEvents'); } }); </script>WEB
use App\Http\Livewire\MembersPortal\MembersDashboard\ActivityDetails; Route::post('/members-dashboard/getActivityDetails',MembersDashboard::class,'getActivityDetails')->middleware((['auth']));NOTA: Cuando traté de consola. registrar los datos, me da todo el html
Pregunta: ¿Cómo puedo devolver el valor en mi controlador?
Creo que podrías usar dos componentes.
Actividades y componentes ActivitiyDetails.
El primer componente obtendrá todas las actividades y cargará los detalles de la actividad en el método de montaje.
$public Activity $activities; public function mount(){ $this->activities= Activity::with('details')->where(...); }Después de eso, en su vista tendrá todas sus actividades y los detalles de las actividades relacionadas, evitando usar JQuery para obtener detalles de cada actividad.
El segundo componente podría ser ActivityDetail, que aceptará un parámetro de tipo objeto ActivityDetail.
en tu vista
<div> @foreach ($activities as $activity) <livewire:activity-detail :post="$activity->details"> @endforeach </div>Espero esta ayuda.